将字符串中的单词转换为德语句子的句子

时间:2017-12-06 12:28:50

标签: c#

我正在寻找一种方法来将String中的单词更改为SentenceCase。 我知道方法TextInfo.ToTitleCase,但这对德语来说并不合适。就像方法文档中那样:

Input                            Language    Expected result                   Actual result
Per anhalter durch die Galaxis   German      Per Anhalter durch die Galaxis    Per Anhalter Durch Die Galaxis

还有另一种方法可以将此权利转换(获得预期结果)吗?动词和形容词应该是小写的。

有很多问题,但我没有找到一个正确用德语工作的方法。

修改

我试过了

var ti = new CultureInfo("de-DE", false).TextInfo;
var res = ti.ToTitleCase("Per anhalter durch die Galaxis");

res知道

Per Anhalter Durch Die Galaxis

2 个答案:

答案 0 :(得分:1)

您想要修复German display of nouns和仅限名词的大小写。 .NET中没有内置的功能。你选择的方法TextInfo.ToTitleCase()对于它来说太“愚蠢”了,因为它只是大写每个单词的第一个字母。

据我所知,你需要自然语言处理。字典不会削减字典,因为有些单词可以解释为名词(应该是大写)和动词(不应该大写)。

或者,换句话说(并忽略名词部分一分钟):当你遇到“sie”时,你怎么知道“他们”(“sie”)或“你”,正式(“ Sie“)是指?

你可以尝试一下,用一种天真的方法不会产生完美但可能接受的结果:

的制备:将

  1. 获取所有德语单词的词典文件
  2. 剥去它只留下名词
  3. 代码:

    1. 在字边界上拆分输入
    2. 将每个单词与您的字典匹配
    3. 如果单词的第一个字母是大写,则大写
    4. 重新组合输入

答案 1 :(得分:1)

ToTitleCase简单而天真地更改字符串中每个单词的大小写,以便单词的第一个字母为大写。文化信息将用于确定什么算作单词的第一个字母(例如哪些符号/标点符号单独的单词),但它不用于确定给定语言的哪些单词应该(不)被标记。你需要为这种语言理解水平推出自己的解决方案