У меня есть приложение на основе Scala (которое, таким образом, имеет доступ к стандартным Java-материалам), используя базу данных PostgreSQL, работающую в Linux.
Я упоминаю базу данных и ОС, потому что, я знаю, Postgres имеет какой-то словарь для выполнения индексации текстового поиска, и я бы подумал, что большинство систем Linux будут иметь какой-то базовый словарь, по крайней мере, для простых вещей, таких как проверка орфографии. Было бы легко или практично использовать их, однако, другое дело.
Мне не нужны полные определения слов, но мне нужно ответить на такие вопросы, как:
X
является существительным? Это глагол?)Решение не обязательно должно быть супер-быстрым, но было бы здорово, если бы он, по крайней мере, использовался для обслуживания веб-запросов, в которых используется кеширование.
Я знаю, что есть множество вариантов - googling для "java dictionary" будет раскопать нагрузку, но совсем не ясно, какие из этих проектов все еще активны, которые более полезны (субъективны, я знаю: P), ни который может быть излишним для моих целей.
Кроме того, решение, которое работает либо (а) со sbt
которое у меня уже есть, либо (б), поскольку простая зависимость sbt
была бы идеальной!
Как отмечено в комментариях, вы можете использовать словарь в системе Linux. Mine имеет american-english
установленный в /usr/share/dict/american-english
. Этот словарь содержит почти 100 000 слов и может быть одобрен для простой проверки орфографии. Если вам нужен другой язык или языковой вариант, вы можете установить его через диспетчер пакетов.
Использование Scala
и этого словаря для простой проверки орфографии может быть выполнено путем тестирования данного слова на существование в наборе слов.
scala> scala.io.Source.fromFile("/usr/share/dict/american-english").getLines.toSet
//Removed some apostrophes for the mark down.
res0: scala.collection.immutable.Set[String] = Set(professed, groundbreakings, slenderized, Nickelodeons, pathogens, OCasey, metacarpals, pokeys, chary, purifies, Borgs, ...
scala> res0.contains("foo")
res1: Boolean = false
scala> res0.contains("computer")
res2: Boolean = true
dict
- еще одна утилита Linux, которая может использоваться для поиска части речи и множества слов. Я возьму описание с этой страницы man:
dict - это клиент для протокола сервера словарей (DICT), протокола запроса/ответа на основе TCP, который обеспечивает доступ к определениям словаря из набора баз данных словаря на естественном языке.
Команда dict
может выполняться локально или против сервера. Трудная часть заключается в том, что вам придется анализировать выходные данные, чтобы получить нужную информацию, что может быть сделано в Scala или в вашем инструменте синтаксического анализа текста. Например, dict run
дает пару определений для существительного и глагола, заданных в результате, начиная с n
v
соответственно.
n 1: a score in baseball made by a runner touching all four bases safely; ...
v 1: move fast by using one feet, with one foot off the ground at any given time;...
Для множественного dict goose
выдает следующую множественную форму гуся, которую вы также должны проанализировать, чтобы найти.
pl. {Geese}