我有一个基于Scala的应用程序(因此可以访问标准的Java的东西),利用PostgreSQL数据库,在Linux上运行。
我提到的数据库和操作系统,因为,我知道Postgres有某种字典做的其文本搜索索引 ,和我想大多数Linux系统将有某种基线字典,对于像拼写检查简单的事情,至少。 无论它会很容易和实际利用这些,虽然是另一回事。
我并不需要完整的单词的定义,但我需要能够回答诸如以下问题:
- 其词性不字属于哪一种? (例如,是字
X
名词?是动词?) - 是Word复数? 如果是这样,什么是它的单数形式? (反之亦然)。
该解决方案并不需要是超级快,但如果是为了维护其中的缓存解决方案结合使用网络的请求,至少使用这将是巨大的。
我知道有吨选择那里 - google搜索“Java的字典”将发掘出的负载,但它并不完全清楚这些项目仍然活跃,这是更有用的(主观的,我知道:P),也这可能是矫枉过正,我的目的。
此外,该工程是(a)与堆栈我已经到位,或溶液(B)作为一个简单的sbt
的依赖将是理想!
正如评论指出的,你可以使用字典中的Linux系统上。 该矿拥有american-english
安装/usr/share/dict/american-english
。 这本词典包括近10万字,并可能为一个简单的拼写检查是好的。 如果你需要另一种语言或语言变体可以通过包管理器安装。
使用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实用工具,可用于查找语音部分和所述多个单词的。 我要借用说明从它的手册页:
字典是用于字典服务器协议(DICT),一个TCP事务基于查询/响应协议,它提供从一组自然语言词典数据库的访问字典定义的客户端。
该dict
命令可以在本地或反对的服务器上运行。 难的是,你将不得不解析输出以获得可在斯卡拉做你想要的信息或您选择的文本解析工具。 例如, 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's feet, with one foot off the ground at any given time;...
对于多个dict goose
输出鹅以下复数形式,你也必须解析找到。
pl. {Geese}
文章来源: Quickest, easiest way to acces (English) 'dictionary' in a Java/Scala-based app, using PostgreSQL, in Linux?