NLTK
NLTK官网 | NLTK-github | nltk_data - github | Jieba-github |
python中的itertools的使用详解
文本去重算法:Minhash/Simhash/Klongsent
TF-IDF与余弦相似性的应用(一):自动提h取关键词
Locality Sensitive Hashing(局部敏感哈希)
局部敏感哈希算法(Locality Sensitive Hashing) 局部敏感哈希——代码篇
LSH/lsh/cMinhash.pyx
cdef uint64_t INT64_MAX = 9223372036854775807 if isinstance(seeds, np.ndarray): self._seeds = seeds.astype(np.uint32) else: self._seeds = np.array(random_state.randint(0, 1e6, seeds), with nogil: for s in range(num_seeds): minhash = INT64_MAX for i in range(strlen - char_ngram + 1): MurmurHash3_x64_128(c_str, char_ngram, seeds[s], hashes) if hashes[0] < minhash: minhash = hashes[0] c_str += 1 # store the current minhash mem_view[s] = minhash # reset string pointer for next hash c_str -= strlen - char_ngram + 1
corpus n. 文集;[计]语料库(复数:corpora) stemmer n. 词干 sparse adj. 稀疏的 vector n. 矢量 Sparse Matrix Similarity 稀疏矩阵相似性 word2vec word to vector doc2bow document to bag of words(词袋)
莫凡PI
tensorflow-hub
Deep Learning for Human Language Processing (2020,Spring)
Deep Learning for Recommendation基于深度学习的推荐系统
word_cloud
计算向量距离
jieba分词
import jieba.analyse import copy # 将STOP_WORDS集合深度拷贝出来 stopwords0 = copy.deepcopy(jieba.analyse.default_tfidf.STOP_WORDS) # 设置用户自定停用词集合之前,将停用词集合深度拷贝出来 stopwords1 = copy.deepcopy(jieba.analyse.default_tfidf.stop_words) # 设置用户自定停用词集合 jieba.analyse.set_stop_words("./data/stop_words.txt") # 设置用户自定停用词集合之后,将停用词集合深度拷贝出来 stopwords2 = copy.deepcopy(jieba.analyse.default_tfidf.stop_words) print(stopwords0) print(stopwords1) print(stopwords2) #对原有语料添加词语 jieba.add_word(word, freq=None, tag=None) #自定义语料词库 jieba.load_userdict('./data/dict.txt')
NLTK
一个是官方的《Natural Language Processing with Python》,以介绍NLTK里的功能用法为主, 同时附带一些Python知识,同时国内陈涛同学友情翻译了一个中文版,这里可以看到:推荐《用Python进行自然语言处理》中文翻译-NLTK配套书; 另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,这本书要深入一些,会涉及到NLTK的代码结构,同时会介绍如何定制自己的语料和模型等,相当不错。 download出错,直接从网上下载库 github网址:https://github.com/nltk/nltk_data/ package里面的内容才是我们需要的,把package文件夹复制到D:或者E:下面,然后把它改名为nltk_data。最后进入到该文件夹里面解压所有的压缩包即可。
nltk主要应用总结
获取和处理语料库 | nltk.corpus | 语料库和词典的标准化接口 |
字符串处理 | nltk.tokenize, nltk.stem | 分词,句子分解提取主干 |
搭配发现 | nltk.collocations | t-检验, 卡方,点互信息 PMI |
词性标识符 | nltk.tag | n-gram,backoff,Brill,HMM,TnT |
分类 | nltk.classify, nltk.cluster | 决策树,最大熵,贝叶斯,EM,k-means |
分块 | nltk.chunk | 正则表达式,n-gram,命名实体 |
解析 | nltk.parse | 图表,基于特征,一致性,概率,依赖 |
语义解释 | nltk.sem, nltk.inference | λ演算,一阶逻辑,模型检验 |
指标评测 | nltk.metrics | 精度,召回率,协议系数 |
概率与估计 | nltk.probability | 频率分布,平滑概率分布 |
应用 | nltk.app, nltk.chat | 图形化的关键词排序,分析器,WordNet查看器,聊天机器人 |
语言学领域的工作 | nltk.toolbox | 处理 SIL工具箱格式的数据 |
nltk.text类介绍:
nltk.text.Text()类用于对文本进行初级的统计与分析,它接受一个词的列表作为参数。Text类提供了下列方法。
方法 | 作用 |
Text(words) | 对象构造 |
concordance(word, width=79, lines=25) | 显示word出现的上下文 |
common_contexts(words) | 显示words出现的相同模式 |
similar(word) | 显示word的相似词 |
collocations(num=20, window_size=2) | 显示最常见的二词搭配 |
count(word) | word出现的词数 |
dispersion_plot(words) | 绘制words中文档中出现的位置图 |
vocab() | 返回文章去重的词典 |
nltk.text.TextCollection类是Text的集合,提供下列方法
方法 | 作用 |
nltk.text.TextCollection([text1,text2,]) | 对象构造 |
idf(term) | 计算词term在语料库中的逆文档频率,即log总文章数文中出现term的文章数 |
tf(term,text) | 统计term在text中的词频 |
tf_idf(term,text) | 计算term在句子中的tf_idf,即tf*idf |