本文参考《python自然语言处理》。
本文主要介绍对于文字处理的基本操作以及自然语言处理领域的一些研究问题。
'''''''''
name:pikachu
keywords: python.nltk;python for nlp;
version:2.0
date:20181224
'''
'''调用nltk;下载nltk中的文本'''
importnltk
# nltk.download()
fromnltk.bookimport*
'''检索文章中的某个词'''
text1.concordance('monstrous')
'''与某词有相似的上下文的其他词'''
text1.similar('monstrous')
'''两个或两个以上的词的共同的上下文'''
text2.common_contexts('monstrous','very')
'''判断词在文本中的位置;竖线代表单词,行代表文本;可以用来研究随时间推移语言使用上的变化'''
text4.dispersion_plot(['citizens','democracy','freedom','duties','America'])
'''词汇表'''
word_list=sorted(set(text3))
print(word_list)
'''词汇表长度'''
list_len=len(word_list)
print(list_len)
'''词汇丰富度:每个字被平均使用了多少次'''
average_len=len(text3)/len(set(text3))
print(average_len)
'''计算某个词在文本中的百分比'''
percentage=100*text4.count('a')/len(text4)
'''计算频率分布,输出按频率排序的单词'''
fdist1=FreqDist(text1)
print(fdist1)
vocabulary1=fdist1.keys()
print(vocabulary1)
'''累计频率图'''
f_graph=fdist1.plot(50,cumulative=True)
'''选出超过特定长度的词'''
V=set(text1)
long_words=[wforwinViflen(w)>15]
print(sorted(long_words))
'''选出双连词'''
bi_words=text4.collocations()
print(bi_words)
'''过滤掉非字母元素'''
words=set([word.lower()forwordintext1ifword.isalpha()])
print(words)
图:随时间变化词的出现频率
NLP的一些研究问题/研究热点/研究难点:
1、词意消歧:某个词在特定语境中是什么意思?
2、指代消解:某个代词或者名词指的是什么?
3、自动生成语言:如自动问答和机器翻译。
附录: