文本解析:区分“字典单词”和名称

时间:2013-03-14 16:57:14

标签: java parsing text dictionary

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

  

e.g。 “......在佛罗伦萨画家莱昂纳多建造......”

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

  

e.g。 names = {...,Florence,Leonardo,...},语言词= {...,In,the,painter,built,...}

我看到两种方法:

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

    问题/问题:

    我找不到名称被排除在外的德语单词列表

    单词flexions(德语复杂)可能不在列表中

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

    问题/问题:

    也可以翻译

    名称,例如佛罗伦萨>佛罗伦斯

    我找不到离线词典列表/ api。因此,我认为使用在线服务是可行的方法,但谷歌翻译等大型服务并非免费。

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

    主要问题是:是否有没有英文和德文名称的综合字典列表,最好是单词屈曲?

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

2 个答案:

答案 0 :(得分:0)

你可以通过检查第一个字母是否为大写来找到很多名字。在此之后,你将排除所有追踪句末字符{“。”,“!”,“?”}的那些。

假设它更像是一个故事,假设一个名字不止一次出现是非常安全的。使用您已经找到的所有名称,并根据句子结尾字符后出现的所有大写单词列表进行检查。添加那些平等的人。

第二部分应该只在你想要每一次出现时才能完成,而不仅仅是那些出现的部分。

至少,这就是我接近它的方式。

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

答案 1 :(得分:0)

是德语有点问题,因为非名词也被大写。

虽然有一种语言属性。虽然可以说“美丽的佛罗伦萨”(“drschöneFlorenz”),但对于个人名称,前面的文章/形容词的使用是非常罕见的。复数的例外,“Müllers”(“米勒斯”)也可以考虑。

所以你只需要一个地名列表等。

检测前面的文章/形容词(der / die / das / ...和-e / -en /-...)。