识别文本中的重要单词和短语

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 :)。

以上是关于识别文本中的重要单词和短语的主要内容,如果未能解决你的问题,请参考以下文章

第十一周进度总结

使用短语中的信息查找句子中单词的索引

在文本块中查找单词/短语中字符的百分比

从文本中检测短语和关键字的算法

NLP经典概念总结

人教版英语必修1到4单词表中的黑体单词