语言处理与Python
本章主要介绍了一些NLP领域和Python的入门知识,对于NLP领域我确实是门外汉,但是Python之前倒是用过了一些,所以看起来问题不大,速度比较快。
首先在命令行里
pip install nltk
使用Pycharm进行了例程代码的复现。
在Pycharm里面开一个console
>>> import nltk
>>> nltk.download()
在出来的python 交互式界面里面下载book数据就可以开始实验了。
>>> from ntlk.book import *
#导入数据
>>> text1.concordance("monstrous")
#搜索文本 在text1中搜索monstrous
>>> text1.similar("monstrous")
#搜索相似的词(这个相似的定义比较不一般 如果两个词上下文都比较一致,认为这两个词相似
>>> text4.dispersion_plot(["citizens","democracy","freedom","duties","America"])
#绘制词汇分布图,这个功能应该稍微实用酷炫一点(text4是美国总统就职演说语料库),这个绘图功能的实现要求安装有matplotlib包
>>>text3.generate()
#生成随机文本的一个功能,但是这个功能在python3中被去掉了,所以会报错
计数相关功能
这一部分主要是一些统计计数相关的功能。
>>> len(text3)
#显示文本text3的长度(标识符的个数,词和标点符号都是标识符)
>>> set(text3)
#获取text3的词汇表
>>> sorted(set(text3))
###对词汇表进行排序
>>> 3/2
#python2里是整除 得到1
>>> 3/2
#python3里是浮点除法得到1.5
简单的统计
>>> fdist1 = FreqDist(text1)
>>> vocabulary1 = fdist1.keys()
>>> vocabulary1[:50]
#此处会报错错误类型: ’dict_keys’ object is not subscriptable Python3中 这个vocabulary也是一个字典,要把它转成list 链表才可以这么用
#更改方法:
>>> vocabulary1 = list(fdist1.keys())
>>> vocabulary1[:50]
>>> fdist1.plot(50,cumulative = True)
#绘制词汇累积频率图,即使用量前50的词汇占全文的比例,有实际意义
#自己实验时的纵坐标是次数不是频率,跟书中不太一样
习题
- 6 text2.dispersion_plot([“Elinor”,”Marianne”,”Edward”,”Willoughby”])
- 7 text5.collocations()
- 9
a 定义一个字符串,并且将它分配给一个变量,如:my_string = ‘My String’(在 字符串中放一些更有趣的东西)。用两种方法输出这个变量的内容,一种是通过简 单地输入变量的名称,然后按回车;另一种是通过使用 print 语句。
b 尝试使用 my_string+ my_string 或者用它乘以一个数将字符串添加到它自身, 例如:my_string* 3。请注意,连接在一起的字符串之间没有空格。怎样能解决这个问题?
解法:
b
ans = (my_string + ’ ‘) * 3
print(ans[0:-1]
“`