簡體   English   中英

英語多元/奇異變換函數

[英]English Language Plural / Singular Transform Function

是否有任何函數(VB.NET或C#)可以將英語單詞轉換為單數形式或復數形式?

我想有一個包含所有英語單詞以及復數形式的數據庫,但我也認為這是愚蠢的,因為這將是巨大的,除了英語中有關於如何將單詞翻譯成復數形式的規則,那么為什么不創建一個進行轉換的函數呢?

System.Data.Entity.Design dll中,有一個名為PluralizationServices的命名空間。

System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-us"))會給你一個公開言自明的對象PluralizeSingularizeIsPluralIsSingular方法。

EF使用它來復數化和單一化表名。

您可以使用Humanizer微庫。 它能夠做到這一點以及更多。

免責聲明:我是圖書館的創建者。

我只想寫一個復數函數,你可以填寫創建復數單詞的通用和特定規則。 這個問題之前已經提到了。

我回答了一個非常相似的問題,但還不夠接近,所以我會在這里解釋。


我自己的偏好是擁有一個轉換引擎以及一組轉換(令人驚訝的足夠)來完成實際工作。

您將完成轉換(從特定到一般),並在找到匹配時將轉換應用於單詞。

正則表達式因其表現力而成為理想的表達方式。 將復數轉換為單數的示例規則集可以是:

 1. If the word is fish, return fish.
 2. If the word is sheep, return sheep.
 3. If the word is "radii", return "radius".
 4. If the word is "types", return "type".
 5. If the word ends in "ii", replace that "ii" with "us" (octopii,virii).
    : : : : :
97. If a word ends with -ies, I replace the ending with -y
98. If a word ends with -es, I remove this ending.
99. Otherwise, I just remove the trailing -s.

請記住,這一個例子,所以如果他們不是完全完美的英語請不要給我帶來困難。 無論如何,這只意味着你應該添加更多的規則,這是答案的全部精髓。

請注意,規則的早期版本可能沒有條目號4.但是,當我們在規則98中發現“類型”轉換為“典型”的問題時,我們在4處創建了一個更高優先級的轉換以滿足這個。

你基本上需要更新這個轉換表,因為你發現英語產生的所有那些奇妙的例外(並且有很多)。

類似的方案可以用於另一個方向,單數形式為復數形式。

這個問題的主要問題是,你必須抓住所有那些以英語聞名的邊緣案例,但不能說服整個星球說世界語,這可能是你最好的鏡頭:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM