как я могу использовать weka для извлечения терминологии?

мне нужно извлечь термины, относящиеся к предметной области, из большого учебного корпуса, такие как политические термины и т. д. Как я могу использовать Weka и ее фильтры для нацеливания на этот объект? Могу ли я использовать вектор признаков, созданный фильтром StringToVector() в Weka, чтобы сделать это или нет?


person MSepehr    schedule 03.01.2014    source источник


Ответы (1)


Можно хотя бы частично, насколько у вас есть соответствующий набор данных. Например, предположим, что у вас есть такой набор данных:

@relation test

@attribute text String
@attribute politics {yes,no}
@attribute religion {yes,no}

@data
"this is a text about politics",yes,no
"this text is about religion",no,yes
"this text mixes everything",yes,yes

Например, чтобы получить термины о политике, вы можете:

  1. Удалите атрибут religion.
  2. Примените фильтр StringToWordVector к текстовому атрибуту, чтобы получить термины.
  3. Примените фильтр AttributeSelection с Ranker и InfoGainAttributeEval, чтобы получить термины с самым высоким рейтингом.

На последнем шаге вы получите список терминов, наиболее подходящих для категории политика. Большинство из них будут терминами из области политики (хотя возможно, что некоторые термины являются прогностическими, но только потому, что они не из области политики, то есть они предоставляют отрицательные доказательства).

Качество терминов, которые вы получаете, зависит от набора данных. Чем больше тем он затрагивает, тем лучше для ваших результатов; поэтому вместо того, чтобы иметь два класса (политика, религия, как в моем наборе данных), гораздо лучше иметь их много и много примеров для каждой категории.

person Jose Maria Gomez Hidalgo    schedule 03.01.2014
comment
спасибо. но я не могу понять шаг 1. потому что мой файл arff находится в следующем формате (с использованием TextDirectoryLoader): ` @relation 'TestCats' @attribute @@class@@ {mis,pol} @data 'это политический текст. ..',pol 'этот текст не является политическим ....',mis ', как я могу удалить неправильное атрибутирование? - person MSepehr; 03.01.2014
comment
В вашем случае классы перекрываются, и вы не можете использовать шаг 3, потому что он даст вам список слов, которые лучше всего предсказывают все классы сразу. Таким образом, вы должны получить тот же формат, который я предложил. Для этого можно сделать нам фильтр MakeIndicator для преобразования номинального класса в несколько атрибутов, по одному на значение. - person Jose Maria Gomez Hidalgo; 13.01.2014