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

7 投票
1 回答
5461 浏览
提问于 2025-04-17 03:48

我在一个Python字符串里存了一些文本。

我想要做的事情

  1. 找出文本中的关键词。
  2. 找出文本中的N-grams(最好能找到比二元组和三元组更多的组合)。

请记住……

  • 文本可能很小(比如一条推文的大小)
  • 文本可能中等(比如一篇新闻文章的大小)
  • 文本可能很大(比如一本书或一个章节的大小)

我现在有的

我已经在使用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-grams。你可以把每个N-gram当作字典里的一个键,值可以是它出现的频率,或者是根据每个词的tfidf计算出的分数。

撰写回答