[英]Remove plural words from a text file
我有一個巨大的文本文件,其中包含如下類別:
mango
mangoes
orange
oranges
cat
cats
我想從行中刪除那些復數詞。 這樣就可以保持:
mango
orange
cat
該問題不適用於正則表達式( 在撰寫本文時,該問題被標記為Regex )。 正則表達式非常適合匹配模式和正則語言。 就像HTML和XML都不是常規語言一樣,英語不是常規語言 (也就是說,英語不是可以使用正則表達式表達的形式語言)。 英語中的復數形式實際上是為了證明這個問題的好辦法:復數car
是cars
,但多為bus
是不是buss
,但busses
。 正如問題所提出的那樣, mango
的復數不是常規形式的mangos
而是mangoes
。 更糟的是,不就是在結尾的名詞o
通過增加形成多oes
-的復數piano
是pianos
不pianoes
..關於什么的wolf
和wife
去wolves
和wives
以及child
要children
?
因此,我希望您深信不疑-您一定會遇到麻煩。
您必須編寫一些常規復數形式的例外列表,在單數形式之后添加s
。
您需要實現一個基本的詞干(僅與復數形式有關)。 欲了解更多信息,請訪問: http : //tartarus.org/martin/PorterStemmer/
詞干之后,您可以使用哈希集來有效地檢查重復項。 如果單詞中沒有單詞,則單次傳遞,然后添加到單詞集。 如果已在集合中,請刪除該詞,因為它是重復詞。 唯一的問題是,這不能保證您刪除復數形式。 沒有英語詞典,這個問題不是很容易。
如果您想要非常好的准確性,則需要使用英語單詞的字典,該字典將單數映射為復數。
如果只想過濾出以s
結尾s
:
grep -P '[^s]$' file.txt > newfile.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.