2017-01-23 9 views
1

Как отличить function/structure words and content/lexical words?Функция vs Content Words

Я уже использую StanfordCoreNLP, поэтому я хотел бы использовать его, если это возможно.

В частности, что следует использовать annotator и как он будет обозначать содержание/лексические слова?

Я пробовал pos, но он не различает слова функции и содержания.

PS. Я использую аннотатор lemma, чтобы получить слова, которые я хочу игнорировать.

PPS. Я использую pyconlp.

+0

Если вы используете версию Stanford CoreNLP от GitHub, мы распределяем с ней список стоп-слов. На этом пути: https://github.com/stanfordnlp/CoreNLP/blob/master/data/edu/stanford/nlp/patterns/surface/stopwords.txt – StanfordNLPHelp

+0

В этой ссылке показан пример использования API в Java: http : //stanfordnlp.github.io/CoreNLP/api.html – StanfordNLPHelp

+0

Итак, одно можно сделать, это прорежировать маркеры и посмотреть, находятся ли они в списке стоп-слов. – StanfordNLPHelp

ответ

0

Функциональные слова (стоп-слова) часто выполняются вручную, потому что они зависят от домена. Список общего назначения можно найти в NLTK. CoreNLP также имеет один here

from nltk.corpus import stopwords 
stops = stopwords.words('english') 

Однако, вы все равно должны смотреть на них, чтобы увидеть, если они имеют смысл для вас использовать случай. Я недавно работал с техническим языком, поэтому я удалил его из своего списка, потому что «IT» является аббревиатурой в этом домене и, следовательно, содержательным словом.

Для вашего аннотатора вы можете пойти с TokenizerAnnotator общего назначения, который разделит ваш текст на «слова». Затем вы можете проверить каждое слово, чтобы узнать, существует ли оно в вашем списке заметок. Если вы работаете со строками, просто попробуйте разбить их на пробелы и удалите или отметьте стоп-слова как проверку кишки.