我认为您正在寻找分块 。我建议阅读NLTK书的第7章,或者阅读我自己的关于块提取的文章。这两个都假设了词性标记的知识,这将在第5章中介绍 。

如何从一系列文本输入中提取常用/重要短语

共 3 个回答
高赞
时间
活跃
0

0

我怀疑您不只是想要最普通的短语,而是想要最有趣的搭配 。否则,您可能最终会过度表达由普通单词组成的短语,而减少有趣和翔实的短语。
为此,您实际上将需要从数据中提取n元语法,然后找到具有最高点智慧互信息 (PMI)的n元语法。也就是说,您希望找到共同出现的单词,而不是偶然发现的单词。
NLTK搭配使用方法在大约7行代码中涵盖了如何执行此操作,例如:
import nltk
from nltk.collocations import *
bigram_measures = nltk.collocations.BigramAssocMeasures()
trigram_measures = nltk.collocations.TrigramAssocMeasures()
# change this to read in your data
finder = BigramCollocationFinder.from_words(
nltk.corpus.genesis.words('english-web.txt'))
# only bigrams that appear 3+ times
finder.apply_freq_filter(3)
# return the 10 n-grams with the highest PMI
finder.nbest(bigram_measures.pmi, 10)
0

如果您只想大于3克,可以尝试一下。我假设您已经剔除了html等所有垃圾
import nltk
ngramlist=[]
raw=<yourtextfile here>
x=1
ngramlimit=6
tokens=nltk.word_tokenize(raw)
while x <= ngramlimit:
ngramlist.extend(nltk.ngrams(tokens, x))
x+=1
大概不是很pythonic,因为我自己一个月才做这个,但是可能会有帮助!
新手导航
- 社区规范
- 提出问题
- 进行投票
- 个人资料
- 优化问题
- 回答问题
0
我有一系列文本项-来自MySQL数据库的原始HTML。我想在这些条目中找到最常用的短语(而不是单个最常用的短语,理想情况下,不强制单词对单词的匹配)。
我的示例是Yelp.com上的任何评论,其中以给定餐厅的数百条评论显示了3个摘要,格式为:
“尝试汉堡”(共44条评论)
例如,此页面的“评论重点”部分:
http://www.yelp.com/biz/sushi-gen-los-angeles/
我已经安装了NLTK,并且已经对其进行了一些尝试,但是老实说,这些选择让他们不知所措。这似乎是一个相当普遍的问题,我无法通过在此处搜索找到简单的解决方案。