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

7
我有一段存储在Python字符串中的文本。
我想要:
1. 识别文本中的关键词。 2. 识别文本中的N-gram(最好不仅限于二元组和三元组)。
需要注意的是:
- 文本可能很小(例如推文大小)。 - 文本可能中等大小(例如新闻文章大小)。 - 文本可能很大(例如书籍或章节大小)。
我已经使用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-grams提供建议,改进BCF和TCF产生的结果,并提供有关确定最独特的个体关键字的最佳方法的建议。非常感谢!
1个回答

2

关于识别最独特的单词的最佳方式,tfidf是总体度量。因此,你需要集成一个搜索引擎(或者创建一个简单的自定义倒排索引,该索引是动态的并保存词项频率、文档频率),以便有效地和实时计算tfidf。

至于N-grams,为什么不使用“窗口”方法创建自定义解析器(窗口长度为N),以识别其中最常见的N-gram呢?(将每个N-gram作为字典中的键,并将值设为频率或基于各个术语tfidf的分数)


我希望在可能的情况下不要重新发明轮子(我只能假设tf-idf已经在nltk的某个地方完成,但我有些麻烦找到钩子)。对于N-grams也是类似的,尽管我很快意识到,如果我想要的不仅仅是三元组,则该轮子尚未被实现(而且,老实说,超过三元组可能没有用处)。 - slifty
我认为这是基础知识。在处理语料库时,计算tf、df可以快速完成,数据库可以帮助存储倒排索引。更好的方法是实现位置倒排索引。N-grams已经被弃用了 :)。 - hymloth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接