将名字和姓氏标记为一个标记

时间:2014-05-07 05:32:02

标签: python nlp tokenize

是否可以对令牌中的文本进行标记,以便将名字和姓氏合并为一个令牌? 例如,如果我的文字是:

text = "Barack Obama is the President"

然后:

text.split()

结果:

['Barack', 'Obama', 'is', 'the, 'President']

如何识别名字和姓氏?所以我只获得['Barack Obama', 'is', 'the', 'President']作为代币。

有没有办法在Python中实现它?

2 个答案:

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