Python:使用短语进行标记

时间:2011-04-03 20:42:12

标签: python nlp tokenize nltk

我想要标记化的文本块,但我不想对空格和标点符号进行标记,因为这似乎是NLTK等工具的标准。我希望将特定短语标记为单个标记,而不是常规标记化。

例如,鉴于句子“The West Wing是由Aaron Sorkin创作的美国电视连续剧,最初于1999年9月22日至2006年5月14日在NBC上播出”,并将该短语添加到令牌器“{ {3}},“产生的代币将是:

  • 西翼
  • 美国人
  • ...

实现这一目标的最佳方法是什么?我宁愿呆在像NLTK这样的工具范围内。

3 个答案:

答案 0 :(得分:2)

您可以使用NLTK的多字表达式标记符MWETokenizer

from nltk.tokenize import MWETokenizer
tokenizer = MWETokenizer()
tokenizer.add_mwe(('the', 'west', 'wing'))
tokenizer.tokenize('Something about the west wing'.split())

你会得到:

['Something', 'about', 'the_west_wing']

答案 1 :(得分:1)

如果您有一组固定的短语,那么简单的解决方案就是标记您的输入并“重新组合”多字标记。或者,进行正则表达式搜索&在标记化之前替换,将The West Wing变为The_West_Wing

要获得更多高级选项,请使用regexp_tokenize或查看chapter 7 of the NLTK book

答案 2 :(得分:0)

如果您事先不知道特定的短语,则可以使用scikit的CountVectorizer()课程。它可以选择指定更大的n-gram范围(ngram_range),然后忽略任何没有出现在足够文档中的单词(min_df)。你可能会认出一些你没有意识到的常见的短语,但你也可能会发现一些毫无意义的短语。它还可以选择使用stop_words参数过滤掉英语停用词(无意义的单词,如'是')。