簡體   English   中英

從文本文件中刪除復數單詞

[英]Remove plural words from a text file

我有一個巨大的文本文件,其中包含如下類別:

mango    
mangoes   
orange   
oranges   
cat   
cats   

我想從行中刪除那些復數詞。 這樣就可以保持:

mango   
orange   
cat   

該問題不適用於正則表達式( 在撰寫本文時,該問題被標記為Regex )。 正則表達式非常適合匹配模式和正則語言。 就像HTML和XML都不是常規語言一樣,英語不是常規語言 (也就是說,英語不是可以使用正則表達式表達的形式語言)。 英語中的復數形式實際上是為了證明這個問題的好辦法:復數carcars ,但多為bus是不是buss ,但busses 正如問題所提出的那樣, mango的復數不是常規形式的mangos而是mangoes 更糟的是,不就是在結尾的名詞o通過增加形成多oes -的復數pianopianospianoes ..關於什么的wolfwifewolveswives以及childchildren

因此,我希望您深信不疑-您一定會遇到麻煩。

您必須編寫一些常規復數形式的例外列表,在單數形式之后添加s

您需要實現一個基本的詞干(僅與復數形式有關)。 欲了解更多信息,請訪問: http : //tartarus.org/martin/PorterStemmer/

詞干之后,您可以使用哈希集來有效地檢查重復項。 如果單詞中沒有單詞,則單次傳遞,然后添加到單詞集。 如果已在集合中,請刪除該詞,因為它是重復詞。 唯一的問題是,這不能保證您刪除復數形式。 沒有英語詞典,這個問題不是很容易。

如果您想要非常好的准確性,則需要使用英語單詞的字典,該字典將單數映射為復數。

如果只想過濾出以s結尾s

grep -P '[^s]$' file.txt > newfile.txt

暫無
暫無

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

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