Вы можете использовать spacy
для распознавания имен и местоположений людей, ваша входная строка может не всегда возвращать сущности, например, если строка содержит только 'krish Stockholm'
текст, она может идентифицировать ее только как имя, поэтому качество входной текст будет иметь решающее значение.
Вы можете обновить значения в существующем фрейме данных следующим образом:
import spacy
nlp = spacy.load('en_core_web_sm')
sentence = "Tom works in Apple office at California"
doc = nlp(sentence)
mylist= []
for ent in doc.ents:
print(ent.text, ent.label_)
mylist.append([ent.text,ent.label_])
print(mylist)
[['Tom', 'PERSON'], ['Apple', 'ORG'], ['California', 'GPE']]
person = ', '.join([i[0] for i in mylist if i[1] == 'PERSON'])
location = ', '.join([i[0] for i in mylist if i[1] == 'GPE'])
df = df.append({'Name':person,'City':location}, ignore_index=True)
print(df)
Name Age City
0 Tom 20.0 California
1 nick 21.0 Brussels
2 krish 19.0 Stockholm
3 jack 18.0 Delhi
4 Tom NaN California
Но если вы измените 'A'
в Apple
на 'a'
, тогда он будет больше не признает Apple
как организацию.