Как найти слова, которые находятся рядом с другими словами?

Как найти слова, которые находятся рядом с другими словами?

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

Например, когда пользователь искалоколомой сайт возвращает другие слова, близкие к этому, напримеррядом,груша,дорогая,сзади,здесь

Как это сделать?

как этот сайт:рифмозона

решение1

Я думаю, что это терпимо сложно. Это раздел естественного языкового программирования (а не другой NLP, нейролингвистический Pap). Вам нужно уметь сопоставлять "here" и "hear" - поэтому вам нужно разбить элементы и сопоставить их с фонетическим эквивалентом (h-"ere" и h-"ere" для обоих). А некоторые написания имеют вариантную фонетику (cough, plough, through) или даже худшие омонимы (there, they're, their group), и они могут быть регионально разными (например, в Великобритании длинная или короткая "a" в garage, graph и glass). Когда вы создаете фонетические эквиваленты, они не всегда являются единственным числом.

Как только у вас появятся фонетические эквиваленты, вы можете использовать различные эвристики, чтобы минимизировать разницу между ними. Для поэзии вам, вероятно, придется чрезмерно подчеркнуть вес окончаний — рифмовка в основном зависит от окончаний слов. Вам также могут понадобиться аллитерационные ряды для поэзии — для благозвучной аллитерации, вероятно, понадобится другой вес.

Я бы присоединился к одному из бесплатных онлайн-университетских курсов по НЛП — их сейчас несколько. Гораздо лучше базируются на современных методах анализа языка. :)

решение2

Вы можете использовать сравнение строк одинаковой длины и допускать наличие одного (или двух) несовпадающих символов.

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

Чтобы построить по вашему примеру: near -> \'nir\ pear -> \'per\ dear -> \'dir\ rear -> \'rir\ или \'rer\ here -> \'hir\

(Здесь я скопировал фонетическую запись из онлайн-словаря Merriam-Webster)

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

В любом случае, как только вы сопоставили свои слова, вы можете сравнить их последнюю фонему: в этом случае вам, возможно, захочется поискать слова, которые заканчиваются на «ir» (что исключит «pear» в данном случае).

Этот метод не выглядит особенно эффективным: если бы я мог использовать немного дискового пространства, я бы сохранил поисковые запросы для будущего использования: поэтому, когда во второй раз выполняется поиск всех слов, рифмующихся со словом «near», приложение просто загружает сохраненный поиск, поскольку словари обычно не развиваются слишком быстро.

Связанный контент