Python:用短语标记

2024-05-15 22:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些要标记的文本块,但我不想标记空白和标点符号,这似乎是像NLTK这样的工具的标准。有一些特定的短语我希望被标记为单个标记,而不是常规的标记化。

例如,假设句子“the West Wing是由亚伦·索金创作的美国电视连续剧,最初于1999年9月22日至2006年5月14日在NBC播出”,并将短语添加到标记器“the west wing”中,则得到的标记将是:

  • 西翼
  • 一个
  • 美国人
  • 。。。

最好的方法是什么?我宁愿呆在像NLTK这样的工具的范围内。


Tags: 工具the标记文本标准空白常规句子
3条回答

您可以使用NLTK的多字表达式标记器^{}

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']

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

如果你有一个固定的短语集,你正在寻找,那么简单的解决方案是标记你的输入和“重组”多字标记。或者,在将The West Wing转换为The_West_Wing的标记化之前执行regexp search&replace。

有关更高级的选项,请使用^{}或参阅chapter 7 of the NLTK book

相关问题 更多 >