Сальма, боюсь, это не тот форум, на который можно ответить, поскольку он не имеет прямого отношения к программированию. Я рекомендую вам снова задать свой вопрос в списке corpora . Вы также можете сначала поискать их архивы.
Кроме того, ваш вопрос недостаточно точен, и я объясню, что я имею в виду. Я предполагаю, что ваш проект о вычислении семантического сходства между предложениями, а не о чем-то еще, чему семантическое сходство является лишь одним из многих. Если это так, то есть несколько вещей, на которые следует обратить внимание: во-первых, ни с точки зрения компьютерной лингвистики, ни с точки зрения теоретической лингвистики неясно, что именно означает термин «семантическое сходство». Существует множество различных его взглядов и определений, все в зависимости от типа решаемой проблемы, имеющихся у нее инструментов и методов, а также предыстории решения этой задачи и т. Д. Рассмотрим следующие примеры:
- Пит и Роб нашли собаку возле станции.
- Пит и Роб никогда не находили собаку возле станции.
- Пит и Роб оба очень любят программировать.
- Патриция нашла собаку возле станции.
- Это была собака, которая нашла Пита и Роба под снегом.
Какие из предложений 2-4 похожи на 1? 2 - полная противоположность 1, но Пит и Роб (не) находят собаку. 3 о Пите и Робе, но в совершенно другом контексте. Я собираюсь найти собаку рядом со станцией, хотя нашла кого-то другого. 5 о Пите, Робе, собаке и событии «находки», но не так, как в 1. Что касается меня, я не смог бы ранжировать эти примеры по их сходству даже без необходимости писать компьютерную программу. .
Чтобы вычислить семантическое сходство, вам нужно сначала решить, что вы хотите считать «семантически похожим», а что нет. Чтобы вычислить семантическое сходство на уровне предложения, в идеале вы должны сравнить какое-либо смысловое представление предложений. Значение представления обычно приходит в виде логической формулы и чрезвычайно сложно генерировать. Однако существуют инструменты, которые пытаются это сделать, например, Boxer
В качестве упрощенного, но часто практического подхода вы определяете семантическое сходство как сумму сходств между словами в одном предложении и другом. Это значительно облегчает проблему, хотя все еще есть некоторые сложные проблемы, требующие решения, поскольку семантическое сходство слов так же плохо определено, как и предложение. Если вы хотите получить представление об этом, загляните в книгу «Лексическая семантика» Д.А. Круз (1986). Тем не менее, существует довольно много инструментов и методов для вычисления семантического сходства между словами. Некоторые из них определяют его в основном как отрицательное расстояние двух слов в таксономии, например Word Net или таксономии Википедии (см. этот документ , который описывает API для этого). Другие вычисляют семантическое сходство, используя некоторые статистические показатели, рассчитанные для больших текстовых корпусов. Они основаны на понимании того, что похожие слова встречаются в одинаковом контексте. Третий подход к вычислению семантического сходства между предложениями или слов касается моделей векторного пространства, которые вы можете узнать из поиска информации. Чтобы получить представление об этих последних методах, взгляните на главу 8.5 в книге Основы статистической обработки естественного языка Мэннинга и Шютце.
Надеюсь, что сейчас вы встанете на ноги.