2016-09-08 10 views
0

Мне нужен файл обучения weka (arff), чтобы иметь имя (String) и массив строк, связанных с этим именем, так что классификатор связывает имя с этими строками, когда я запускаю его на любом текст. Для этой задачи, как сделать атрибут в weka, который является массивом String? Или есть альтернативный способ сделать это?Атрибут массива String в weka

(я использую Наивный байесовский классификатор)

Например: Дипики Шаха, запоем, смешные, довольно

Так что, если у меня есть предложение с любым из приведенных выше строк с Дипиком Shah , он должен классифицировать предложение как о Дипика-шахе.

EDIT: Мне нужно классифицировать предложение как имя, используя слова и фразы в предложении. Поэтому я даю набор строк, связанных с именем и с каким именем они связаны. Классификатор должен найти класс из предложения. Или, альтернативно, после того, как я извлекаю функции из предложения (предположим, что я выделил функции).

+0

Разве ваше имя является классом, который вы хотите предсказать для массива строк? Можете ли вы представить, по крайней мере, один пример, чтобы мы могли получить четкое представление. – drp

+0

Да, это класс. – zoozoofreak

+0

Тогда просто используйте фильтр StringToWordVector (я полагаю, что ваш строковый массив - это массив слов типа «Ты хороший парень») на вашем массиве String. В классе StringToWordvector вы можете просто преобразовать массив String (предложение, состоящее из одного или нескольких слов) в N-граммах, где вы можете указать любое значение класса N через класс Tokenizer. Вам нужно указать массив String как атрибут String n arff file. Включите его значение («Вы хороший парень») в кавычки в файле arff. Если вы не можете понять этот комментарий, дайте мне знать, я подробно расскажу об anser в разделе ответов. – drp

ответ

2

Файл ARFF должен быть в следующем формате:

@Relation testRelation 

@attribute firstAtr string 
@attribute secondAtr string 
@attribute thirdAtr string 
@attribute yourClass {Deepika Shah, secondClass, ...other classes listed here} 

@data 
"Voracious reader","funny"," pretty",Deepika Shah 

...more data here 

Затем вы можете импортировать файл ARFF в WEKA.

Теперь вам нужно преобразовать значения String в числа. Для этого вам необходимо использовать фильтр weka->unsupervised->attribute->StringToWordVector, расположенный в разделе «Фильтр» на вкладке предварительной обработки. Вы можете нажать на фильтр, чтобы настроить параметры, такие как представление термина (tf, tf-idf), стоп-слова, алгоритмы стеблемера, n-граммы и т. Д. Затем вы нажимаете «применить».

После завершения этого процесса вы готовы перейти на вкладку классификатора и продолжить классификацию. Вы можете выбрать свой классификатор, и вам хорошо идти.

Примечание: вам нужно выбрать номинальный класс (Nom)yourClass (расположенный под вариантами тестирования), чтобы кнопка запуска была нажата.

Примечание2: если ваши атрибуты жала имеют фиксированные значения, как смешно, грустно, нейтральный и т.д. Вы можете использовать номинальные атрибуты вместо строк


пс хороший пример включения все выше, можно найти здесь: https://www.youtube.com/watch?v=jSZ9jQy1sfE

+0

Моя проблема в том, что количество атрибутов String для каждого класса может быть разным. У Дипики Шаха может быть 3 строки, чтобы описать ее, Катрина Кайф может иметь 5 строк и так далее. Что мне делать в этом случае? – zoozoofreak

+0

Что значит 3 строки? Если вы имеете в виду, что для описания одного класса существует n строк, вы должны вручную заменить все n строк одним универсальным классом. Например, если Deepika Shah, blablabla1, blablabla2 относятся к тому же классу, то замените все blablabla1 и blablabla2 на Deepika Shah – xro7

+0

Нет, я имею в виду, как у вас есть firstAtr, secondAtr, thirdAtr и т. Д. У меня есть n количество атрибутов. – zoozoofreak

 Смежные вопросы

  • Нет связанных вопросов^_^