是否可以对令牌中的文本进行标记,以便将名字和姓氏合并为一个令牌? 例如,如果我的文字是:
text = "Barack Obama is the President"
然后:
text.split()
结果:
['Barack', 'Obama', 'is', 'the, 'President']
如何识别名字和姓氏?所以我只获得['Barack Obama', 'is', 'the', 'President']
作为代币。
有没有办法在Python中实现它?
答案 0 :(得分:1)
您正在寻找的是命名实体识别系统。我建议你不要将此视为标记化的一部分。
对于python,您可以使用https://pypi.python.org/pypi/ner/
网站上的示例
>>> tagger.json_entities(“爱丽丝去了自然历史博物馆。”)
'{“组织”:[“自然历史博物馆”],“人”:[“爱丽丝”]}''
答案 1 :(得分:0)
这是一个满足您问题需求的正则表达式。它会找到以小写字母开头的单个单词,或者匹配单个单词或大写单词对。
import re
re.findall(r"[a-z]\w+|[A-Z]\w+(?: [A-Z]\w+)?",text)
输出
['Barack Obama', 'is', 'the', 'President']