У меня есть такое предложение:
sent <- "She likes long walks on the beach with her dogs."
Скажем, я токенизирую предложение по слову. Какие инструменты НЛП я могу использовать для получения данных о местоимениях в этом предложении, таких как подлежащее (первое лицо, второе лицо, третье лицо) и тип (притяжательное, возвратное и т. д.)?
Я знаю, что такое тегирование речи. Но ссылка не говорит мне, как сказать что-либо о местоимениях, кроме того, что это местоимения.





Короткий ответ: вам необходимо реализовать дополнительную (соответствующую) эвристику. Например, быстрый и грязный подход к обнаружению шаблона SUBJECT-VERB-OBJECT заключается в поиске троек NOUN-VERB-NOUN (или PRONOUN-VERB-NOUN), как рекомендовано Извлечь тройное подлежащее, сказуемое и объектное предложение - не уверен, что есть расширенный пакет NLP в R, который пока делает это надежно.
Для ваших данных сначала создайте теги POS, используя http://smart-statistics.com/part-speech-tagging-r/ (любой пакет POS в порядке):
library(devtools)
devtools::install_github("bnosac/RDRPOSTagger")
library(RDRPOSTagger)
devtools::install_github("ropensci/tokenizers")
library(tokenizers)
Затем создайте теги для своих данных:
sent <- "She likes long walks on the beach with her dogs."
unipostagger <- rdr_model(language = "English", annotation = "UniversalPOS")
pos <- rdr_pos(unipostagger, sent)
> pos
doc_id token_id token pos
1 d1 1 She PRON
2 d1 2 likes VERB
3 d1 3 long ADJ
4 d1 4 walks VERB
5 d1 5 on ADP
6 d1 6 the DET
7 d1 7 beach NOUN
8 d1 8 with ADP
9 d1 9 her PRON
10 d1 10 dogs NOUN
11 d1 11 . PUNCT
А затем извлеките узор:
> subj <- pos %>% filter(grepl("PRON|NOUN",pos)) %>% select(token) %>% slice(1)
> verb <- pos %>% filter(grepl("VERB",pos)) %>% select(token) %>% slice(1)
> obj <- pos %>% filter(grepl("PRON|NOUN",pos)) %>% select(token) %>% slice(n())
> paste(subj, verb, obj)
[1] "She likes dogs"
Очевидно, что эффективность будет зависеть от сложности ваших предложений.
Интересно! Есть ли пакет, который делает это в Python, который я могу просто вызвать через сетку?
Это называется тегированием части речи. Это область активных исследований. Это может помочь вам начать: smart-statistics.com/part-speech-tagging-r