String.Format中的适当文章(a/an)

Div*_*rro 8 language-agnostic grammar nlp localization

我正在寻找一种文化敏感的方法,在使用适当的文章(a/an)时将名词正确地插入句子中.如果在其他地方存在适当的方法,它可以使用String.Format,或者可能使用其他东西.

例如:

基本句子:"你正在看a/an {0}"

这应格式化为:"你正在看胡萝卜"或"你正在看一个鸡蛋."

我目前正在通过手动检查要插入的单词的第一个字符,然后手动插入"a"或"an"来完成此操作.但我担心当应用程序本地化为其他语言时,这可能会限制我.

是否有解决此问题的最佳做法?

解决方案:似乎问题很复杂,以至于没有一个实用程序或框架以我最初的措辞来解决这个问题.似乎最好的解决方案(在我的情况下)是将文章与名词一起存储在数据库中,以便翻译人员可以拥有他们所需的控制级别.感谢所有的建议!

lc.*_*lc. 9

问题甚至在英语中,a-vs-an不是由起始字母确定的,而是起始声音.您可以根据起始字母用英语做出相当不错的假设,但也有一些例外(例如"小时","用户").

最好的办法是访问单词的发音,以便能够选择.

除此之外,接下来要做的最好的事情是列出一些常见的异常,然后猜测其余的异常.


来自维基百科:

"a"或"an"的选择取决于语音规则而不是拼写惯例.语音中使用"An"来消除"a"和后续单词之间需要的尴尬声门停止(瞬间无声停顿),例如"X射线"......以下段落是"an"的拼写规则如果不理解语音规则,可以使用它.


Gar*_*Ray 4

除了 lc(一小时,一顶帽子)指出的问题之外,不同语言的语法规则差异很大。例如,许多基于拉丁语的语言根据名词的“性别”和“数字”来切换名词冠词,有时可以从单词的最后几个字符推断出来,但与英语有同样的问题......许多例外。

如果您正在谈论本地化界面,我会存储带有每种语言的界面元素名词的文章。如果您正在处理用户输入,我看不出有什么简单的方法可以做到这一点。