Список терминов / pos-тегирование векторов терминов в R

У меня есть файл.csv только с одним столбцом, содержащим 1000 строк. Каждая строка содержит слово (модель мешка со словами). Теперь я хочу выяснить для каждого слова, является ли оно существительным, глаголом, прилагательным и т. Д. Я хотел бы иметь второй столбец (с 1000 строками), каждый из которых содержит информацию (существительное или глагол), принадлежащую слову в столбце 1.

Я уже импортировал CSV в R. Но что мне теперь делать?

[Вот пример. У меня есть эти слова, и я хочу выяснить, является ли это существительным глаголом и т. Д.] [

2 ответа

Есть несколько вариантов, но вы можете использовать udpipe за это.

terms <- data.frame(term = c("unit", "determine", "generate", "digital", "mount", "control", "position", "input", "output", "user"),
                    stringsAsFactors = FALSE)

library(udpipe)

# check if model is already downloaded. 
if (file.exists("english-ud-2.0-170801.udpipe")) 
  ud_model <- udpipe_load_model(file = "english-ud-2.0-170801.udpipe") else {
    ud_model <- udpipe_download_model(language = "english")
    ud_model <- udpipe_load_model(ud_model$file_model)
  }


# no need for parsing as this data only contains single words.
t <- udpipe_annotate(ud_model, terms$term, parser = "none")
t <- as.data.frame(t)
terms$POSTAG <- t$upos

terms
        term POSTAG
1       unit   NOUN
2  determine   VERB
3   generate   VERB
4    digital    ADJ
5      mount   NOUN
6    control   NOUN
7   position   NOUN
8      input   NOUN
9     output   NOUN
10      user   NOUN

Вы могли бы использовать spacyr который является R-оболочкой для пакета Python spaCy,

Примечание: вам придется

library(spacyr)

spacy_initialize(python_executable = '/path/to/python')

Тогда для ваших условий:

Terms <- data.frame(Term = c("unit",
                    "determine",
                    "generate",
                    "digital",
                    "mount",
                    "control",
                    "position",
                    "input",
                    "output",
                    "user"), stringsAsFactors = FALSE)

Используйте функцию spacy_parse() чтобы пометить свои термины и добавить их в свой фрейм данных:

Terms$POS_TAG <- spacy_parse(Terms$Term)$pos

Результат:

        Term POS_TAG
1       unit    NOUN
2  determine    VERB
3   generate    VERB
4    digital     ADJ
5      mount    VERB
6    control    NOUN
7   position    NOUN
8      input    NOUN
9     output    NOUN
10      user    NOUN
Другие вопросы по тегам