Мне нужно lemmatize текст, используя nltk. Чтобы сделать это, я применяю nltk.pos_tag
к каждому предложению, а затем конвертирую полученные теги Penn Treebank (http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html) в теги WordNet. Мне нужно сделать это, потому что WordNetLemmatizer.lemmatize()
ожидает как слово, так и его правильный pos_tag в качестве аргументов, иначе он просто предположит, что все является глаголом.
Я только что обнаружил, что в WordNet существует пять разных тегов:
Тем не менее, каждый пример, который я нашел в Интернете, просто игнорирует wn.ADJ_SAT при преобразовании тегов Treebank в теги WordNet. Все они просто сопоставляют теги Penn с тегами WordNet:
Поэтому wn.ADJ_SAT никогда не используется.
Мой вопрос сейчас, если есть случаи, когда lemmatizer возвращает другой результат для ADJ_SAT, чем для ADJ. Каковы примеры слов, которые являются спутниковыми прилагательными (ADJ_SAT) и нет обычных прилагательных (ADJ)?
WordNetLemmatizer
в NLTK
не отличает сателлитные прилагательные от обычных прилагательных.
nltk.stem.WordNetLemmatizer.lemmatize
использует встроенную функцию морфинга WordNets. Возвращает входное слово без изменений, если оно не может быть найдено в WordNet. "
В WordNet спутниковое приложение - более широко называемое спутниковой синхронизацией - скорее является семантической меткой, используемой в других местах WordNet, чем специальной частью речи в nltk.
Из словарного глоссария:
Satellite Synset: Synset в прилагательном кластере, представляющем концепцию, похожую по смыслу на концепцию, представленную его голосовой синхронизацией.
Пользователь tripleee
указывает в этом вопросе следующее:
прилагательные подразделяются на "голова" и "спутниковые" синтезы внутри прилагательного clutser
Кроме того, в документации nltk
для nltk.stem.WordNetLemmatizer.lemmatize
предполагается, что часть речи по умолчанию является существительным вместо глагола, если не указано иное.