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

时间:2011-10-06 16:06:45

标签: python nlp nltk

我将文本存储在python字符串中。

我想要什么

  1. 识别该文本中的关键词。
  2. 识别该文本中的N-gram(理想情况下不仅仅是bi和tri克)。
  3. 请记住......

    • 文字可能很小(例如推文大小)
    • 文字可能是中间的(例如新闻文章大小)
    • 文字可能很大(例如书本或章节大小)

    我有什么

    我已经在使用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 个答案:

答案 0 :(得分:1)

至于识别最独特的个别关键词的最佳方法,tfidf是总量度。因此,您可以以某种方式集成搜索引擎(或创建一个简单的自定义反向索引,它是动态的并保存术语频率,文档频率),以便有效地和即时地计算tfidf。

至于你的N-gram,为什么不使用“窗口”方法(窗口长度为N)创建自定义解析器,以识别最常见的? (只需将每个N-gram保存为字典中的一个键,其值可以是频率或分数(基于单个术语的tfidf))