как мога да използвам 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. Премахнете атрибута религия.
  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