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

sli*_*fty 6 python nlp nltk

我有文本存储在python字符串中.

我想要的是

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

记住...

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

是)我有的

我已经使用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')]
Run Code Online (Sandbox Code Playgroud)

我知道BigramCollocationFinder和TrigramCollectionFinder,它可以解决我正在寻找的这两种情况.

问题

我需要更高阶n-gram的建议,改进BCF和TCF的结果类型,并建议识别最独特的个别关键词的最佳方法.

非常感谢!

hym*_*oth 2

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

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