识别文本中的重要单词和短语
Posted
技术标签:
【中文标题】识别文本中的重要单词和短语【英文标题】:Identifying important words and phrases in text 【发布时间】:2011-10-06 16:06:44 【问题描述】:我将文本存储在 python 字符串中。
我想要什么
-
识别文本中的关键词。
识别该文本中的 N-gram(理想情况下不仅仅是 bi 和 trigram)。
记住...
文本可能很小(例如推文大小) 文本可能是中间的(例如新闻文章大小) 文本可能很大(例如书本或章节大小)我有什么
我已经在使用nltk 将语料库分解为标记并删除停用词:
# split across any non-word character
tokenizer = nltk.tokenize.RegexpTokenizer('[^\w\']+', gaps=True)
# tokenize
tokens = tokenizer.tokenize(text)
# remove stopwords
tokens = [w for w in tokens if not w in nltk.corpus.stopwords.words('english')]
我知道 BigramCollocationFinder 和 TrigramCollectionFinder 确实是我正在寻找的这两种情况。
问题
我需要关于高阶 n-gram 的建议,改进来自 BCF 和 TCF 的结果类型,以及关于识别最独特的单个关键词的最佳方法的建议。
非常感谢!
【问题讨论】:
【参考方案1】:至于识别最独特的单个关键词的最佳方法,tfidf 是总度量。因此,您必须以某种方式集成搜索引擎(或制作一个简单的自定义倒排索引,该索引是动态的并保存术语频率、文档频率),以便高效、即时地计算 tfidf。
至于您的 N-gram,您为什么不使用“窗口”方法(窗口长度为 N)创建一个自定义解析器,以识别它们中最常见的? (只需将每个 N-gram 作为字典中的键,其值为频率或分数(基于单个术语的 tfidf))
【讨论】:
我希望不要在可能的情况下重新发明***(我只能假设在 nltk 的某个地方完成了 tf-idf,但我在找出钩子时遇到了一些麻烦)。 N-gram 也类似,尽管我很快意识到,如果我想要的不仅仅是 tri-gram,那么***就不一定会实现(老实说,超过 tri-gram 可能没有用) 我相信这是基本的。在处理语料库时,可以快速计算 tf、df,并且数据库可以帮助存储倒排索引。更好的是,实现一个位置倒排索引。不推荐使用 N-gram :)。以上是关于识别文本中的重要单词和短语的主要内容,如果未能解决你的问题,请参考以下文章