Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将名字和姓氏标记为一个标记_Python_Nlp_Tokenize - Fatal编程技术网

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

Python 将名字和姓氏标记为一个标记,python,nlp,tokenize,Python,Nlp,Tokenize,是否可以在标记中标记文本,以便将名字和姓氏组合在一个标记中? 例如,如果我的文本是: text = "Barack Obama is the President" 然后: 结果: ['Barack', 'Obama', 'is', 'the, 'President'] 我怎样才能认出名字和姓氏?所以我只得到了作为代币的['barackobama','is','the','President'] 有没有办法在Python中实现它?这里有一个正则表达式可以满足您的问题。它将查找以小写字符开头的单

是否可以在标记中标记文本,以便将名字和姓氏组合在一个标记中? 例如,如果我的文本是:

text = "Barack Obama is the President"
然后:

结果:

['Barack', 'Obama', 'is', 'the, 'President']
我怎样才能认出名字和姓氏?所以我只得到了作为代币的
['barackobama','is','the','President']


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

这里有一个正则表达式可以满足您的问题。它将查找以小写字符开头的单个单词,或匹配单个或成对的大写单词

import re
re.findall(r"[a-z]\w+|[A-Z]\w+(?: [A-Z]\w+)?",text)
输出

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

您正在寻找的是命名实体识别系统。我建议你不要认为这是标记化的一部分。< /P> 对于python,您可以使用

来自站点的示例

>>>tagger.json_实体(“爱丽丝去了自然历史博物馆。”)
“{“组织”:[“自然历史博物馆”],“人”:[“爱丽丝”]}”


这很有帮助:谢谢你的回答,这是一个很好的开始,但不是很准确,因为如果文本是:
巴拉克·奥巴马先生是总统
,它将产生:
['Mr Barack'、'Obama'、'is'、'the'、'President']
。如果你想捕获大写单词的较长连续短语,请将模式更改为
r”[a-z]\w+[a-z]\w+(?:[A-Z]\w+*”
但正则表达式确实有其局限性。我建议研究NER(命名实体识别)系统,如感谢,它看起来像是一个很好的工具,但我无法让它工作,因为这个错误:
NLTK无法找到java文件!使用特定于软件的配置参数或设置JAVAHOME环境变量。
,但是我接受答案。
['Barack Obama', 'is', 'the', 'President']