NLP学习-1--语料预处理与向量空间,语料格式

本文介绍了自然语言处理中语料库的预处理步骤,包括分词、停用词处理、词频计算及词袋模型。讨论了如何使用gensim库进行向量化,特别是TF-IDF模型,并探讨了语料库的流式处理和存储格式,如Matrix Market,同时强调了与Numpy和SciPy的兼容性。
摘要由CSDN通过智能技术生成

一,语料(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
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值