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

Python 识别文本中的重要单词和短语,python,nlp,nltk,Python,Nlp,Nltk,我将文本存储在python字符串中 我想要什么 识别文本中的关键词 识别文本中的N-gram(理想情况下不仅仅是bi和tri-gram) 记住 文本可能较小(例如,推特大小) 文本可能为中间文本(例如新闻文章大小) 文本可能较大(例如书籍或章节大小) 我拥有的 我已经在使用将语料库分解为标记并删除stopwords: # split across any non-word character tokenizer = nltk.tokenize.RegexpTokenizer(

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

我想要什么

  • 识别文本中的关键词
  • 识别文本中的N-gram(理想情况下不仅仅是bi和tri-gram)
  • 记住

    • 文本可能较小(例如,推特大小)
    • 文本可能为中间文本(例如新闻文章大小)
    • 文本可能较大(例如书籍或章节大小)
    我拥有的

    我已经在使用将语料库分解为标记并删除stopwords:

        # 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')]
    
    我知道BigramCollaborationFinder和TrigramCollectionFinder非常适合这两种情况

    问题

    我需要高阶n-gram的建议,改进BCF和TCF的结果类型,以及关于识别最独特的单个关键字的最佳方法的建议


    非常感谢

    至于识别最独特的单个关键词的最佳方法,tfidf是总体衡量标准。因此,您必须以某种方式集成搜索引擎(或制作一个简单的自定义反向索引,该索引是动态的,并保存术语频率、文档频率),以便快速高效地计算tfidf


    至于您的N-gram,为什么不使用“窗口”方法(窗口的长度为N)创建一个自定义解析器来识别(比如)最频繁的语法?(只需将每个N-gram作为字典中的一个键,使用频率或分数(基于单个术语的tfidf))

    我希望在可能的情况下不要重新发明轮子(我只能假设tfidf在nltk的某个地方完成,但我在找出挂钩方面遇到了一些困难)。与N-gram类似,尽管我很快意识到,如果我想要超过三克,那么轮子就没有必要实现(老实说,超过三克可能没有用),但我相信这是基本的。在处理语料库时,可以快速计算tf、df,数据库可以帮助存储反向索引。更好的是,实现位置反转索引。不推荐使用N-gram:)。