如何使用nltk用已知的biwords标记一个句子?

2024-10-01 07:22:33 发布

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

我正在用python做一个文本分析任务。在这里,我将NLTK用于文本处理任务。我有一组预定义的biwords,如下所述。你知道吗

arr = ['Animo Text Analytics Inc.', 'Amila Iddamalgoda']

我还有一句话是这样的。你知道吗

sentence = "Amila Iddamalgoda is currently working for Animo Text Analytics Inc. and currently following the Text Mining and Analytics course provided by coursera."

现在我用NLTK标记了这个。你知道吗

tokenizer = RegexpTokenizer(r'\w+')
tokens = tokenizer.tokenize(sentence)

这给出了单字标记(显然)。然而,我需要的是匹配预定义的双字集(在开头提到),并将该双字pharases作为单个标记。你知道吗

例如:阿米拉Iddamalgoda,目前,工作,动画文本分析公司,following。。。你知道吗

我怎样才能做到这一点?请帮帮我


Tags: andtext标记文本sentenceanalyticstokenizerinc
1条回答
网友
1楼 · 发布于 2024-10-01 07:22:33

将文本中出现的多个单词中的所有空格替换为一些可清晰识别的字符,例如下划线:

for expr in arr:
    sentence = re.sub(expr, re.sub(r'\s+', "_", expr), sentence)
#'Amila_Iddamalgoda is currently working ...'

你现在可以做“普通”标记化了。你知道吗

如果怀疑文本中的单词之间存在多个空格,请首先创建与多个单词匹配的正则表达式列表:

toreplace = {r'\s+'.join(a.split()) : '_'.join(a.split()) for a in arr}
#{'Amila\\s+Iddamalgoda': 'Amila_Iddamalgoda',
# 'Animo\\s+Text\\s+Analytics\\s+Inc.': 'Animo_Text_Analytics_Inc.'}

现在,将每个替换模式应用于原来的句子:

for pattern in toreplace:
    sentence = re.sub(pattern, toreplace[pattern], sentence)

现在,您可以再次执行“普通”标记化。你知道吗

提出的解决方案效率很低。如果效率很重要,您可以编写自己的正则标记化表达式并使用nltk.regexp_tokenize()。你知道吗

相关问题 更多 >