Самый быстрый и простой способ получить доступ к «английскому» словарю в приложении на основе Java / Scala, используя PostgreSQL, в Linux?

1

У меня есть приложение на основе Scala (которое, таким образом, имеет доступ к стандартным Java-материалам), используя базу данных PostgreSQL, работающую в Linux.

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

Мне не нужны полные определения слов, но мне нужно ответить на такие вопросы, как:

  • К какой части речи относится слово? (Например, слово X является существительным? Это глагол?)
  • Слово множественное? И если да, то какая его единственная форма? (И наоборот.)

Решение не обязательно должно быть супер-быстрым, но было бы здорово, если бы он, по крайней мере, использовался для обслуживания веб-запросов, в которых используется кеширование.

Я знаю, что есть множество вариантов - googling для "java dictionary" будет раскопать нагрузку, но совсем не ясно, какие из этих проектов все еще активны, которые более полезны (субъективны, я знаю: P), ни который может быть излишним для моих целей.

Кроме того, решение, которое работает либо (а) со sbt которое у меня уже есть, либо (б), поскольку простая зависимость sbt была бы идеальной!

  • 1
    «Я думаю, что в большинстве систем Linux есть какой-то базовый словарь, по крайней мере, для простых вещей, таких как проверка орфографии» - у них есть список словарных слов, разделенный символом новой строки, если он пригодится: en.wikipedia.org/ вики / Words_ (Unix)
  • 0
    «Словарь» в PostgreSQL - это словарь, а не настоящий словарь. Это верно для большинства других подобных систем. PostgreSQL также имеет список стволов, но вместо того, чтобы идентифицировать слова как множественное / единственное число, это просто набор правил, по которым слова могут быть сведены к их общим корням для целей поиска. Так что это не то, что вы хотите. Я думаю, что вы хотите настоящий словарь.
Показать ещё 3 комментария
Теги:
dictionary

1 ответ

2

Как отмечено в комментариях, вы можете использовать словарь в системе 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} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню