java - 文本解析: Distinguish between "dictionary words" and names

标签 java parsing text dictionary

我有包含“词典单词”和名称的英语和德语文本。

e.g. "... In Florence the painter Leonardo built ..."

我有一个 Java 程序,需要确定每个单词是否是相应语言的名称或单词。

e.g. names={..., Florence, Leonardo, ...}, language words={..., In, the, painter, built, ...}

我看到两种方法:

  1. 使用相应的字典列表,将其加载到哈希结构中,查看该单词是否在其中(语言单词)或不存在(名称/拼写错误)。

    问题/问题:

    我找不到排除姓名的德语单词列表

    单词屈折(德语中较复杂)可能不在列表中

  2. 使用服务/API 将单个单词翻译成另一种语言,查看该单词是否已更改(语言单词)或未更改(名称/拼写错误)。

    问题/问题:

    名称也可以翻译,例如佛罗伦萨 > 弗洛伦斯

    我找不到离线词典列表/api。因此,我认为使用在线服务是正确的选择,但像谷歌翻译这样的大型服务并不是免费的。

当然,有些名称类似于字典单词,并且在这两种方法中它们都被识别为字典单词,这很好。

主要问题是:是否有没有英语和德语名称的综合词典列表,最多有单词弯曲?

或者: 是否有免费(在线)API 来完成该任务?还有其他解决办法吗?

最佳答案

通过检查第一个字母是否大写,你可以找到很多名字。之后,您将排除所有尾随句末字符 {".", "!", "?"} 的字符。

假设这更像是一个故事,那么可以肯定地假设一个名字会出现多次。使用您已经找到的所有名称,并根据句子结尾字符后出现的所有大写单词列表进行检查。添加那些相等的。

仅当您想要每一次发生而不仅仅是发生的事件时才应完成第二部分。

至少,这就是我的处理方式。

编辑:我对德语不太熟悉,但我的方法确实会对德语有一些问题。请参阅 Joop Eggen 针对该语言的解决方案。

关于java - 文本解析: Distinguish between "dictionary words" and names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415540/

相关文章:

java - 使用 Gson 解析嵌套数组的 Json

bash - 将文本文件复制到 Bash 中的变量

java - 将 jtextfield 中的单词 ï 更改为 Ì

用于检查模式是否存在的 Java 正则表达式

java - jvm hang and kill -3 & jmap 失败

perl - Perl中不规则文本文件的解析

java - System.out.print() 之后的 nextInt()

c# - 解析法国日期

regex - 如何在文本文件中的正则表达式之前和之后添加换行符?

python - 将格式化文本存储在变量 python 中