在不分解关键短语的情况下进行标记

Tokenizing without breaking up key phrases

我有一串文本 s = 'hi, welcome to grade 3'

当前,当我标记字符串时,我得到

tokens = ['hi', 'welcome', 'to', 'grade', '3']

如何在不为 'grade 3'

等常用短语生成单独标记的情况下标记字符串

我希望输出类似于

tokens = ['hi', 'welcome', 'to', 'grade 3']

我有一个常用短语列表,如果这样可以更简单的话,我想将其保留在一个标记中

最终我不想让我的所有标记都成为双字母组,因为我仍然需要程序其他部分的单个单词标记

此代码使用 MWETokenizer.

from nltk import word_tokenize
from nltk.tokenize import MWETokenizer
tk = MWETokenizer([('grade', '3')])
tokens = tk.tokenize(word_tokenize('hi, welcome to grade 3'))
words = [val.replace('_', ' ') for val in tokens]
print(words)