Как классифицировать слова по соответствующим им категориям?

Мне нужно реализовать классификацию текста для длинного списка слов. У меня есть некоторые категории, например. Если в списке есть слово «Великобритания», оно попадет в раздел «Регионы». Если слово «пицца», оно попадет в категорию «еда».

Как я могу классифицировать слова по разным категориям? Есть ли какой-либо инструмент с открытым исходным кодом для этого?


person wasimbhalli    schedule 30.01.2011    source источник
comment
Вы пытаетесь классифицировать слова в списках, для которых уже определены некоторые категории, или документы, содержащие подмножество слов? Я не уверен, что вы пытаетесь сделать здесь.   -  person Joel    schedule 30.01.2011
comment
Категории фиксированы, но в списке слов может быть любое количество связанных/не связанных слов.   -  person wasimbhalli    schedule 30.01.2011
comment
Я пытаюсь классифицировать слова, после некоторой предварительной обработки у меня будет список слов. Поэтому я должен классифицировать слова, а не документы   -  person wasimbhalli    schedule 30.01.2011
comment
Но слова уже сопоставлены с категориями?   -  person Joel    schedule 30.01.2011
comment
Я определил некоторые категории. Теперь для каждого конкретного слова я должен проверить, что если слово относится к какой-либо категории, если оно более или менее связано с этой категорией, я помещу его в корзину с этой категорией, иначе я его проигнорирую.   -  person wasimbhalli    schedule 30.01.2011
comment
Поможет ли мне wordnet как-то? или любой другой репозиторий онтологий? или какой-то алгоритм подобия? Я смущен!   -  person wasimbhalli    schedule 30.01.2011
comment
Wordnet имеет тезаурус, так что вы можете использовать его для получения родственных слов. Но на практике я не думаю, что это поможет вам. Обычный способ сделать это — собрать репрезентативные документы для каждой категории и выбрать первые N терминов (по частоте, исключая стоп-слова). Поэтому, если вам нужно определить слова, связанные с едой, вы можете собрать рецепты и меню из Интернета (путем сканирования) и выбрать первые N терминов с этих сайтов (исключая стоп-слова).   -  person Joel    schedule 30.01.2011
comment
Итак, я должен просканировать Интернет, а затем передать классификатор для каждой категории? Я только что нашел Java WordNet::Similarity на cogs.susx.ac.uk/users/ drh21. Я думаю, что это может помочь, и тогда мне не понадобятся данные для обучения.   -  person wasimbhalli    schedule 30.01.2011
comment
У вас уже есть куча онтологий, таких как OBO?   -  person tchrist    schedule 30.01.2011
comment
Нет, у меня нет никакой онтологии, я хочу знать, возможно ли это с помощью wordnet? Есть ли источник для поиска онтологий или мне придется создать свой собственный? как объяснил Джоэл?   -  person wasimbhalli    schedule 30.01.2011
comment
Ну, вам просто нужен комплект представительских документов. Сканирование соответствующего веб-сайта является одним из способов их получения. Удачи в использовании подобия WordNet - я думаю, вы обнаружите, что оно недостаточно точное для любого практического применения. Связанный вопрос: stackoverflow.com/questions/2919095/ontology-with-javajena   -  person Joel    schedule 30.01.2011
comment
Я пытаюсь сделать то же самое, классификацию текста. вы можете запросить онтологию dbpedia, в которой уже определены категории для большинства слов, из данных википедии.   -  person madCode    schedule 10.05.2011


Ответы (1)


Я не совсем уверен, что вы пытаетесь сделать, но если вы хотите создать список репрезентативных слов для ряда категорий, вы можете сделать это, выбрав первые N наиболее часто встречающихся слов, исключая стоп-слова из набора документов, представляющих каждую категорию. Это простой способ создания очень простой онтологии.

Например, чтобы создать набор слов о еде, вы можете просканировать Интернет в поисках рецептов. и меню, а затем выберите из них наиболее часто встречающиеся слова. Я ожидаю, что после того, как вы исключите стоп-слова, у вас будет хороший список слов, связанных с едой. Для слов, связанных с программированием, вы можете сканировать stackoverflow.com и т. д. и т. д.

Опять же, это может быть не то, что вы пытаетесь сделать...

person Joel    schedule 30.01.2011
comment
Да, это именно то, чего я хочу добиться. Вы предоставили очень хороший способ сделать это. Всего одна точка? Может ли мера подобия помочь нам в этом отношении, то есть насколько два слова связаны друг с другом? - person wasimbhalli; 30.01.2011
comment
re: сходство - в теории да, но на практике это сложно, и гораздо проще создать покрытие слов, имея достаточно большие наборы документов для каждого класса, который вы хотите классифицировать. Вы надеетесь, что, делая это, вы зафиксируете каждое общеупотребительное слово, относящееся к категории. Как только вы попробуете это, вы увидите, что наиболее часто встречающиеся слова довольно репрезентативны. - person Joel; 30.01.2011