Поиск строки по сочетанию синтаксических и регулярных выражений
Я хотел бы использовать R для поиска в тексте шаблонов, выраженных через смесь POS и реальных строк. (Я видел эту функциональность в библиотеке Python здесь: http://www.clips.ua.ac.be/pages/pattern-search).
Например, шаблон поиска может быть: 'NOUNPHRASE be|is|was ADJECTIVE than NOUNPHRASE'
и должен возвращать все строки, содержащие структуры, такие как: "кошка быстрее собаки".
Я знаю что пакеты типа openNLP
а также qdap
предлагаем удобную POS-маркировку. Кто-нибудь использовал выходные данные для такого рода обработки образцов?
1 ответ
Как стартер, используя koRpus
а также TreeTagger
:
library(koRpus)
library(tm)
mytxt <- c("This is my house.", "A house is better than no house.", "A cat is faster than a dog.")
pattern <- "Noun, singular or mass.*?Adjective, comparative.*?Noun, singular or mass"
tagged.results <- treetag(file = mytxt, treetagger="C:/TreeTagger/bin/tag-english.bat", lang="en", format="obj", stopwords=stopwords("en"))
tagged.results <- kRp.filter.wclass(tagged.results, "stopword")
taggedText(tagged.results)$id <- factor(head(cumsum(c(0, taggedText(tagged.results)$desc == "Sentence ending punctuation")) + 1, -1))
setNames(mytxt, grepl(pattern, aggregate(desc~id, taggedText(tagged.results), FUN = paste0)$desc))
# FALSE TRUE TRUE
# "This is my house." "A house is better than no house." "A cat is faster than a dog."