jieba入门记录——nltk中文语料处理
环境:pycharm(Anaconda)
1.官网下载jieba:https://pypi.org/project/jieba/
2.将下载好的压缩包解压到Anaconda的pkgs目录
3打开Anaconda prompt进入终端,切换到Anaconda的jieba目录下,执行python setup.py install完成安装,输入python,进入python环境,import jieba 正常,OK。退出。
4.进入pycharm,查看File | Settings | Project: 项目名 | Project Interpreter-----》有jieba,成功,没有jiaba的话,是否装了多个anaconda,切换正确的即可。

nltk自带了很多统计的功能,但针对中文来讲,分词的工作需要我们手动完成,比如使用jieba。把处理过的文本封装成nltk的“text”对象,才能使用nltk进行处理。
红楼梦TXT 中文文本分析为例:

import re
import jieba
import nltk
# nltk.download()
f = open('E:/private_study/pycharm/nltk/hlm.txt','r',encoding='utf-8')
word = f.read()
print(word[0:50])
 #使用停止词来去掉不需要词
cleaned_data = ''.join(re.findall(r'[\u4e00-\u9fa5]', word))
wordlist = jieba.lcut(cleaned_data)
print(wordlist[0:50])
# 对象构造
text = nltk.text.Text(wordlist )
print(type(text))#<class 'nltk.text.Text'>
print(text[0:50])

分词的目的是为nltk的text对象提供封装的语料,使用结巴分词的lcut方法进行分词,该方法返回的分词是一个list对象.

文件编码方式参考

感谢分享

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() 返回文章去重的词典

concordance(word, width=79, lines=25) 显示word出现的上下文
该方法接受一个单词字符串,会打印出输入单词在文本中出现的上下文,查看单词的上下文可以帮助我们了解单词的词性。

#显示20条结果,每条长度为10
text2=text.concordance('刘姥姥', width=10, lines=20)

结果显示

nltk对query文本进行切分给出权重 nltk处理中文文本_字符串


common_contexts(words) 显示words出现的相同模式,也就是说他们经常和什么一起出现。该方法接受一个单词列表,会打印出列表中所有单词共同的上下文。

text3=text.common_contexts(['因','由'])

结果

道_你

给出两个词的共同的上下文。这意味着下划线部分可用“因” 或‘“由”进行填空。(找了好久)


similar(word) 显示word的相似词
该方法接受一个单词字符串,会打印出和输入单词具有相同上下文的其他单词,也就是说找出和指定单词相似的其他单词。

text4=text.similar('管家')

结果

说 我 来 你 那 东西 病 丫头 姑娘 太太 也 又 去 道 大 了 听 这 但 有

collocations(num=20, window_size=2) 显示最常见的二词搭配,该方法会打印出文本中频繁出现的双连词。
去实践发现报错ValueError: too many values to unpack (expected 2)
所有改了把collocations()改为collocation_list(),可以。

text5=text.collocation_list()
print(text5)

结果

['邢夫人 王夫人', '下回分解 第一百', '十二个 女孩子', '太上皇 皇太后', '人不知 鬼不觉', '丁是丁 卯是卯', '周家为 媳贾政', '天有不测风云 人有旦夕祸福', '如花美眷 似水流年', '张若锦 赵亦华', '既有今日 何必当初', '百足之虫 死而不僵', '绿叶成荫 子满枝', '说一是一 说二是二', '知端底 下回分解', '王氏之 内侄女', '宝钗黛 玉湘云', '贾母王 夫人道', '大姑子 小姑子', '贾珍之 妻尤氏']

count(word) word出现的词数

text6=text.count('王夫人')
print(text6)

结果

941

dispersion_plot(words) 绘制words中文档中出现的位置图
该方法接受一个单词列表,会绘制每个单词在文本中的分布情况。

text7=text.dispersion_plot(['贾宝玉','薛宝钗','林黛玉'])

结果

nltk对query文本进行切分给出权重 nltk处理中文文本_字符串_02


vocab() 返回文章去重的词典

text8=text.vocab()
print(text8.items())

结果

dict_items([('第一回', 2), ('甄士隐', 11), ('梦幻', 3), ('识通灵', 1), ('贾雨村', 19), ('风尘', 2), ('怀', 14), ('闺秀', 3), ('此', 118), ('开卷', 1), ('也', 5608), ('作者', 5), ....])

小记录一下。