我正在获取网址列表并使用nltk抓取它们。我的最终结果是以列表的形式显示列表中网页上的所有单词。麻烦的是,我只是在寻找不是通常的英语"糖" " as,and,like,to,am,for"我知道我可以构建一个包含所有常用英语单词的文件,只需从我的已删除标记列表中删除它们,但是某个库是否有自动执行此功能的内置功能?
我基本上在页面上寻找有用的单词,这些单词不是绒毛,可以为页面提供一些上下文。几乎就像stackoverflow上的标签或谷歌用于搜索引擎优化的标签。
答案 0 :(得分:3)
我认为你要找的是nltk.corpus中的stopwords.words:
>>> from nltk.corpus import stopwords
>>> sw = set(stopwords.words('english'))
>>> sentence = "a long sentence that contains a for instance"
>>> [w for w in sentence.split() if w not in sw]
['long', 'sentence', 'contains', 'instance']
修改:搜索停用词可能会有重复项:Stopword removal with NLTK,How to remove stop words using nltk or python。看看这些问题的答案。并考虑Effects of Stemming on the term frequency?
答案 1 :(得分:1)
虽然您可能会在NLTK(以及其他地方)获得强大的停用词列表,但您可以根据您处理的数据类型(注册)轻松构建自己的列表。你不想要的大多数单词都是所谓的语法单词:它们非常频繁,所以你可以通过按降序排序频率列表并丢弃n-top项来轻松捕获它们。
根据我的经验,任何中等大小的语料库(> 10k运行文本标记)的前100个排名几乎不包含任何内容单词。
但是,您似乎对提取关键字感兴趣。对于此任务,纯频率签名不是很有用。您需要将频率转换为与参考语料库相关的其他值:这称为加权,并且有许多不同的方法来实现它。 TfIdf是自1972年以来的行业标准。
如果您打算花时间完成这些任务,请获取语料库语言学或计算语言学的入门手册。
答案 2 :(得分:0)
您可以查找有关单词频率数据的 corpora linquistics (以及其他注释)。
您可以从维基百科上的链接开始:http://en.wikipedia.org/wiki/Corpus_linguistics#External_links
找到更多信息