2024-05-15 22:28:50 发布
网友
我有一些要标记的文本块,但我不想标记空白和标点符号,这似乎是像NLTK这样的工具的标准。有一些特定的短语我希望被标记为单个标记,而不是常规的标记化。
例如,假设句子“the West Wing是由亚伦·索金创作的美国电视连续剧,最初于1999年9月22日至2006年5月14日在NBC播出”,并将短语添加到标记器“the west wing”中,则得到的标记将是:
最好的方法是什么?我宁愿呆在像NLTK这样的工具的范围内。
您可以使用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。
The West Wing
The_West_Wing
有关更高级的选项,请使用^{}或参阅chapter 7 of the NLTK book。
您可以使用NLTK的多字表达式标记器^{} :
你将得到:
如果您事先不知道特定的短语,可以使用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。
相关问题 更多 >
编程相关推荐