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

Python Machine Learning Classifying Words in Sentence

我想使用人工智能和机器学习技术制作个人助理。我正在使用 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!

但我不明白我怎么才能得到用户的名字。我想我应该对句子中的单词进行分类,但我不知道。你能帮忙吗?

你需要获得专有名词。下面的代码可以做到:

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

您可以使用 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