2016-05-23 2 views
0

Мое приложение требует, чтобы я мог сравнивать слова и выяснять, являются ли они синонимами, не обращая внимания на времена.Как я могу идентифицировать или находить синонимы независимо от времени?

Например, «complete», «finish» возвращает true, а «complete», «finish» также возвращает true.

Я экспериментировал с Тезаурусом Алтависта (http://thesaurus.altervista.org/), но он не смог удовлетворить напряженное состояние.

Я считал, что это проблема, но это не решит проблему, поскольку она часто обрезает слово до слова, не содержащие словаря.

Есть ли существующий API, который удовлетворяет моим требованиям? (Я попытался использовать API-интерфейсы Bing Synonyms, но он больше не поддерживается)

Есть ли способ объединить два API для получения желаемого результата (один для «нормализации» времени слова, а другой - для проверки синоним)

Я работаю на C#, но открыт для любого решения.

Благодаря

ответ

0

Я бы предпочел сосредоточиться на решении, чем на его имя и владельца. В принципе, логика должна быть иметь три таблицы:

слова (идентификатор, слово)

word_forms (идентификатор, word_id, форма)

синонимами (word_id1, word_id2)

И вы можете выбрать синонимы таким образом:

select 1 
from words w1 
join word_forms wf1 
on w1.id = wf1.word_id and ((w1.word = 'completed') or (wf1.form = 'completed')) 
join synonyms 
on (w1.id = synonyms.word_id1) or (w1.id = synonyms.word_id2) 
join words w2 
on (w2.id = synonyms.word_id1) or (w2.id = synonyms.word_id2) 
join word_forms 
on w2.id = wf2.word_id and ((w2.word = 'finish') or (wf2.form = 'finish')) 
limit 0, 1 

Если это возвращает 1, то они являются синонимами, в противном случае они не известны как синонимы. Вам нужно будет собрать большую базу данных в эту форму, чтобы сделать эту работу.

0

Есть ли способ объединить два API, чтобы получить желаемый результат (один к «нормализовать» Слово напряженной и другой для проверки состояния синонима)?

Да - вы хотите lemmatizer. Это похоже на стволовых, за исключением того, что это даст вам лексику слова, которая появляется в словаре. Вот тот, который, кажется, популярен для C#: http://lemmatise.ijs.si/Software/Version3. Или, если вы хотите использовать API, googling «lemmatization api» отображает много вещей, которые выглядят многообещающими.

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