Может ли Python + NLTK использоваться для определения предмета предложения? Из того, что я узнал до сих пор, является то, что предложение может быть разбито на голову и его иждивенцев. Напр. "Я застрелил слона". В этом предложении я и слон являются иждивенцами для расстрела. Но как я узнаю, что субъект в этом предложении является I.
Как определить предмет предложения?
Ответ 1
Как Книга NLTK (упражнение 29) гласит: "Одним из распространенных способов определения предмета предложения S на английском языке является словосочетание, являющееся потомком S и брата VP."
Посмотрите на пример дерева: действительно, "я" - это существительная фраза, которая является дочерним элементом S, являющимся родным братом VP, в то время как "слон" не является.
Ответ 2
Вы можете использовать Spacy.
Код
import spacy
nlp = spacy.load('en')
sent = "I shot an elephant"
doc=nlp(sent)
sub_toks = [tok for tok in doc if (tok.dep_ == "nsubj") ]
print(sub_toks)
Ответ 3
Английский язык имеет два голоса: активный голос и пассивный голос. Лучше всего использовать голос: Активный голос.
Это следует за моделью subject-verb-object
. Чтобы пометить тему, напишите набор правил с тегами POS. Отметьте предложение I[NOUN] shot[VERB] an elephant[NOUN]
. Если вы видите, что первое существительное является субъектом, то есть глагол, а затем есть объект.
Если вы хотите сделать его более сложным, предложение - I shot an elephant with a gun
. Здесь предлогам или подчиненным союзам, таким как with, at, in, могут быть заданы роли. Здесь предложение будет помечено как I[NOUN] shot[VERB] an elephant[NOUN] with[IN] a gun[NOUN]
. Вы можете легко сказать, что слово с получает инструментальную роль. Вы можете создать основанную на правилах систему, чтобы получить роль каждого слова в предложении.
Также посмотрите на паттерны пассивного голоса и правила записи для них.
Ответ 4
Вы можете doc = nlp(text.decode('utf8'))
проблему, выполнив что-то вроде doc = nlp(text.decode('utf8'))
, но это, вероятно, принесет вам больше ошибок в будущем.