| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 无监督关键短语的生成问题博客06--create_vocabulary.py的分析 -> 正文阅读 |
|
[人工智能]无监督关键短语的生成问题博客06--create_vocabulary.py的分析 |
2021SC@SDUSC 本文我们将分析create_vocabulary.py文件,该文件主要的功能是创立了一个词典,统计了文本的所有词和词出现的次数,以便后续的指标的计算和处理,将得到的结果保存到vocab_kp20k.npy文件中。首先我们来看一下该文件的结构。 ? 一、create_vocabulary.py结构?图1:create_vocabulary.py的第一部分和相关资源的下载 首先是一些包的引入,Counter基于可迭代对象实现计数,我们将依次对每个词计数,依旧是引入了nltk包,里面有很多自然语言处理相关的函数接口。通过nltk下载了英文的stopwords停词赋给stoplist,stopwords一般指没有实意的词,如英文语句中的the,is等。 图2:create_vocabulary.py的第二部分 第二部分写了一个类Vocabulary,是对词典的一个封装,提供了对词典进行处理的相关函数。
之后还写了build_vocab函数,该函数完成了词典的构造,设置了阈值为3,即只记录语料中出现了超过三次的单词。里面会有对vocabulary对象的相关处理。 代码的第三部门就是main函数的实现和对结果的保存,将在下文仔细分析。 ? 二、关于create_ vocabulary_demo.py的分析?在分析源文件之前, 我们先来分析一个创建词典的demo文件以大致了解词典创建的思路和方法。我们采用测试文本test.txt进行词典demo的构建,该测试文本选自wiki文本数据的一小部分,只是为了演示demo,因此这里不再设置阈值,而是列出所有出现的单词。测试文本的内容见下图。 图3:test.txt 将test.txt与create_ vocabulary_demo.py放在同一目录下后读入测试文件,开始词典的构建,create_ vocabulary_demo.py的完整代码如下。
对于test.txt中的每一行,首先将英文转为小写统一处理,再以分词得到了由一个一个英语单词组成的列表word_list,这里没有用stopwords对一些停词进行处理。之后构造词典,对于列表word_list中的每一次词word(也就是列表中的元素),若它还未出现在词典word_cnt中,就在词典中加入该词并令其出现次数为1,若已出现,则令其出现次数加一。 我们来分析将结果排序的那一行代码,首先这里用了一个迭代器,dict.items()——an interator over the (key, value) items of D,之后用到了匿名函数。lambda x:x+1表示若输入为x,将其转化为x+1输出,这里lambda d:d[1]表示若访问(key,value),则输出value(即d[1],d[0]表示key)。这里的d可以是任意变量名,用作指代dict.items()返回的变量。reverse=True表示按值进行从大到小的排序;reverse=False表示按值进行从小到大的排序。 demo的输出结果如下: 图4:create_ vocabulary_demo.py的输出结果 ? ?三、关于create_ vocabulary.py的分析?在分析了demo之后,我们就很容易分析源文件了。不过需要注意的是,这里并不统计每个词出现了多少次,而是希望给每个词一个索引,用集合的方式,可以用索引找到单词,也可以用单词找到索引。我们首先分析vocabulary类。
首先是初始化的init函数,这里首先将idx初始化为0,?也就是词典中还没有单词。有两个集合一个是word2idx用来是词找索引,idx2word用索引找词,都初始化为空集合。
add_word函数向词典中添加单词,如果参数word不在集合word2idx中,则?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 15:31:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |