from nltk.book import * #使用nlp工具包
text1.concordance(“monstrous”) #搜索文本,看到词的上下文
text1.similar(“monstrous”)#搜索词的上下文,查找还有哪些词出现在相似的上下文中,以此判断该词在文中的意思
函数common_contexts允许我们研究两个或两个以上的词共同的上下文,如monstrous和very。我们必须用方括号和圆括号把这些词括起来,中间用逗号分割。
text2.common_contexts([“monstrous”, “very”])
be_glad am_glad a_pretty is_pretty a_lucky
text4.dispersion_plot([“citizens”, “democracy”, “freedom”, “duties”, “America”])
#通过离散图看出上述的词在整个文本的分布位置,可以用来研究随时间推移语言使用上的变化
使用函数 len 获取长度
如:len(text3)
set(text3)获得 text3 的词汇表 #记录文本中出现的不同词汇,不考虑同个词汇的出现频率
词和标点符号统称为标识符
一个词类型是指一个词在一个文本中独一无二的出现形式或拼写。
计数的项目中包括标点符号,所以我们把这些叫做唯一项目类型而不是词类型。
sorted(set(text3))
#得到一个词汇项的排序表,这个表以各种标点符号开始,然后是以 A 开头的词汇。大写单词排在小写单词前面
from future import division#测量文本词汇丰富度(平均每个词在文本中出现的次数)
print(len(text3)/len(set(text3)))#python中使用浮点除法
text3.count(“smote”)
#计算特定词在文本中的出现次数
def lexical_diversity(text):
return len(text) / len(set(text)) #定义函数
sent1 = [‘Call’, ‘me’, ‘Ishmael’, ‘.’] #链表,存储文本的方式,可以对链表使用 Python 加法运算,创造一个新链表
sent1.append(“Some”) #追加,向链表中增加一个元素
索引链表
text4[173] #找出文本次序为173的元素
text4.index(‘awaken’) #找出元素第一次出现的索引
text5[16715:16735]#切片,获取子链表,m:n 表示元素 m…n-1
’ '.join([‘Monty’, ‘Python’]) #把词用链表连接起来组成单个字符串
‘Monty Python’.split() #字符串分割成一个链表
fdist1 = FreqDist(text1) #获取文本的总词数
sorteddict = sorted(fredist1.items(), key=lambda item:item[1],reverse=True)
按词频排序的结果
s=[]
print(sorteddict[:50]) # 取前50的词,出现单词和频率
for i in range (50) :
s.append(sorteddict[i][0])
print(s)#只出现单词
fdist1[‘whale’] #获取whale出现的次数
fdist1.plot(50, cumulative=True)#词汇累计频率图,记录前五十个词
fdist1.hapaxes() #查找只出现过一次的词
此集合中所有 w 都满足 w 是集合 V(词汇表)的一
个元素且 w 有性质 P。表示为:[w for w in V if p(w)]
Ex:
V = set(text1) #链表不同于集合,可能存在相同的元素
long_words = [w for w in V if len(w) > 15 and fredist1[w]>=1000
] #筛选出长度大于15的单词且词频超过1000
sorted(long_words)
bigrams([‘more’, ‘is’, ‘said’