Как обучить инструмент анализа настроений в НЛП Стэнфорда
Черт возьми! Я использую пакет NLP для Stanford Core, и моя цель - провести анализ настроений в прямом эфире твитов.
Использование инструмента анализа настроений как результата очень плохого анализа текстового "отношения". Многие положительные стороны обозначены как нейтральные, многие отрицательные положительные. Я уже получил более миллиона твитов в текстовом файле, но я не знаю, как на самом деле обучить инструмент и создать свою собственную модель.
Ссылка на страницу анализа настроений Стэнфорда
"Модели могут быть переустановлены с использованием следующей команды с использованием набора данных формата PTB:"
java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath train.txt -devPath dev.txt -train -model model.ser.gz
Образец из dev.txt(Ведущий 4 представляет полярность из 5... 4/5 положительных)
(4 (4 (2 A) (4 (3 (3 warm) (2 ,)) (3 funny))) (3 (2 ,) (3 (4 (4 engaging) (2 film)) (2 .))))
Пример из test.txt
(3 (3 (2 If) (3 (2 you) (3 (2 sometimes) (2 (2 like) (3 (2 to) (3 (3 (2 go) (2 (2 to) (2 (2 the) (2 movies)))) (3 (2 to) (3 (2 have) (4 fun))))))))) (2 (2 ,) (2 (2 Wasabi) (3 (3 (2 is) (2 (2 a) (2 (3 good) (2 (2 place) (2 (2 to) (2 start)))))) (2 .)))))
Образец из train.txt
(3 (2 (2 The) (2 Rock)) (4 (3 (2 is) (4 (2 destined) (2 (2 (2 (2 (2 to) (2 (2 be) (2 (2 the) (2 (2 21st) (2 (2 (2 Century) (2 's)) (2 (3 new) (2 (2 ``) (2 Conan)))))))) (2 '')) (2 and)) (3 (2 that) (3 (2 he) (3 (2 's) (3 (2 going) (3 (2 to) (4 (3 (2 make) (3 (3 (2 a) (3 splash)) (2 (2 even) (3 greater)))) (2 (2 than) (2 (2 (2 (2 (1 (2 Arnold) (2 Schwarzenegger)) (2 ,)) (2 (2 Jean-Claud) (2 (2 Van) (2 Damme)))) (2 or)) (2 (2 Steven) (2 Segal))))))))))))) (2 .)))
У меня есть два вопроса в будущем.
Каково значение и различие между каждым файлом? Train.txt/Dev.txt/Test.txt?
Как бы я тренировал свою собственную модель с сырым, непроверенным текстовым файлом, полным твитов?
Я очень новичок в НЛП, поэтому, если мне не хватает какой-либо необходимой информации или чего-либо вообще, пожалуйста, критикуйте! Спасибо!
Ответы
Ответ 1
Каково значение и различие между каждым файлом? Train.txt/Dev.txt/Test.txt?
Это стандартная терминология машинного обучения. Набор поездов используется для (сюрприза удивления) подготовки модели. Набор разработчика используется для настройки любых параметров, которые могут иметь модели. То, что вы обычно делаете, это выбрать значение параметра, подготовить модель на обучающем наборе, а затем проверить, насколько хорошо обученная модель делает в наборе разработки. Затем вы выбираете другое значение параметра и повторяете. Эта процедура поможет вам найти приемлемые значения параметров для вашей модели.
Как только это будет сделано, вы продолжите проверку того, насколько хорошо модель работает на тестовом наборе. Это невидимый. Ваша модель никогда не сталкивалась ни с одним из этих данных раньше. Важно, чтобы тестовый набор был отделен от набора для обучения и разработки, иначе вы эффективно оцениваете модель по данным, которые они видели ранее. Это было бы неправильно, так как это не даст вам представление о том, насколько хорошо модель действительно работает.
Как бы я тренировал свою собственную модель с необработанным текстовым текстовым файлом, полным твиты?
Вы не можете, и вам не следует тренироваться с помощью нераспакованного набора документов. Вся точка рекурсивной глубокой модели (и причина, по которой она так хорошо работает) заключается в том, что она может учиться на основе аннотаций на каждом уровне дерева синтаксического анализа. Вышеприведенное предложение может быть отформатировано следующим образом:
(4
(4
(2 A)
(4
(3 (3 warm) (2 ,)) (3 funny)
)
)
(3
(2 ,)
(3
(4 (4 engaging) (2 film)) (2 .)
)
)
)
Обычно анализатор настроений тренируется с аннотациями на уровне документа. У вас есть только один балл, и этот балл относится к документу в целом, игнорируя тот факт, что фразы в документе могут выражать разные чувства. Команда Стэнфорда приложила немало усилий для аннотации каждой фразы в документе для настроений. Например, слово film
само по себе является нейтральным в отношении: (2 film)
. Однако фраза engaging film
очень положительна: (4 (4 engaging) (2 film)) (2 .)
Если вы отметили твиты, вы можете использовать любой другой классификатор настроений на уровне документа. sentiment-analysis в stackoverflow уже есть некоторые хорошие ответы, я не буду повторять их здесь.
PS Вы отметили твиты, которые у вас есть? Все 1 миллион из них? Если бы вы это сделали, я бы заплатил вам много денег за этот файл:)
Ответ 2
Код Java:
BuildBinarizedDataset → [http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/sentiment/BuildBinarizedDataset.html
SentimentTraining → http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/sentiment/SentimentTraining.html
Для тех, кто набирает код на С#, я преобразовал источник Java в два файла кода, которые должны упростить понимание этого процесса.
https://arachnode.net/blogs/arachnode_net/archive/2015/09/03/buildbinarizeddataset-and-sentimenttraining-stanford-nlp.aspx
Ответ 3
Если это помогает, я получил очень простой код С# из Arachnode - две или две, чтобы получить правильные пути для моделей и т.д., но тогда он отлично работает. То, что отсутствовало, было чем-то вроде правильного формата входных файлов. Это в Javadoc, но для справки, для BuildBinarizedDataset это что-то вроде:
2 line of text here
0 another line of text
1 yet another line of text
etc
Построение, которое довольно тривиально, в зависимости от того, с чего вы начинаете (база данных, файл Excel, что угодно)