一,语料(Corpus)
语料库即各个文档文章的集合。收集语料库后,要进行文本预处理,比如:文本分词, 英文字母全部转为小写,删除停用词,计算词频,删除低频词等。
1 分词
(1)英文文本分词
(2)中文文本分词,利用jieba工具
安装:pip install jieba
jieba介绍:https://github.com/fxsjy/jieba
jieba.cut(text)普通分词
#想要一些词不要分开,可以加载自定义词典
file_userDict='dict.txt'
jieba.load_userdict(file_userDict)
2 停用词
停用词就是一些无关紧要的词,比如中文里的 “的”,“哦”。英文里的“yeah”, “oh”。可以网上下载别人已经整理好的停用词,根据自己的任务需要去修改一下就行。停用词也可以去标点符号。
网上下载的英文停用词文档:
网上下载的中文停用词文档:中文停用词表: 中文停用词表:百度停用词列表、哈工大停用词表、四川大学机器智能实验室停用词库、中文停用词库、stopword
去停用词后,进行分词的示例:(注意一下文件的编码方式,要和utf-8保持一致,不一致的话,另存为一下,选择utf-8格式保存)
3 计算词频
用下面这个方法创建字典,统计词频,特别好用。用defaultdict创建字典,当键值不存在,也不会报错,更简便。
#计算词频
from collections import defaultdict
frequency = defaultdict(int)
for text in texts:
for token in text:
frequency[token] += 1
4 仅保留词频数高于1的词汇
#仅保留词频数高于1的词汇
processed_corpus=[[word for word in text if frequency[word]>1]for text in texts ]
print(processed_corpus)
5 将语料库中的每个词汇与唯一的整数ID相关联,这里使用gensim.corpora.Dictionary这个类来完成。
最终代码:
import jieba
from collections import defaultdict
#创建停用词列表
stoplist= [line.strip() for line in open('stopword.txt',encoding='UTF-8').readlines()]
filename='分词前.txt'
outfilename='分词后.txt'
inputs=open(filename,'r',encoding='UTF-8')
outputs=open(outfilename,'w',encoding='UTF-8')
#每一行语句都通过jieba分词,并且每个单词之间通过空格隔开。
raw_corpus=[' '.join(jieba.lcut(line.strip())) for line in inputs]
print(raw_corpus)
#将文档中可能存在的英文字符小写化,按空格进行拆分,且去停用词
#注意格式,这里是二维列表了。
texts = [[word for word in document.lower().sp