Python机器学习对句子中的单词进行分类

时间:2018-12-05 18:50:31

标签: python python-3.x machine-learning artificial-intelligence part-of-speech

我想用人工智能和机器学习技术做一个私人助理。我正在使用Python 3.7,但有一个问题。

启动软件时,首先会询问用户名称。我希望它获得用户名。

in = input('Hey, what is your name?')
#some classifier things
#...
print = input('Nice to meet you ' + in + '!')

但是,如果用户输入句子,我想正确地知道名称。 这是一个示例:

Hey, what is your name?
John
Nice to meet you John!

但是,即使有人这样输入,我也想获得姓名:

Hey, what is your name?
It's John.
Nice to meet you John!

但是我不明白如何获取用户名。我想我应该对句子中的单词进行分类,但我不知道。你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

您需要获取专有名词。下面的代码可以做到这一点:

from nltk.tag import pos_tag

sentence = " It's John"
tagged_sent = pos_tag(sentence.split())

propernouns = [word for word,pos in tagged_sent if pos == 'NNP']

答案 1 :(得分:0)

您可以使用Spacy name entity recognition工具箱。它识别各种实体,包括人,国家,组织和...

以下代码是如何使用它的有效示例:

import spacy
import en_core_web_sm
nlp = en_core_web_sm.load()

doc = nlp('Its John and he is working at Google')
print([(X.text, X.label_) for X in doc.ents])

输出:

[('John', 'PERSON'), ('Google', 'ORG')]

注意:运行上述脚本之前,您可能还需要下载Spacy模型:

pip install spacy
python -m spacy download en