2011-11-13 2 views
4

私は文字列のリストを持っている:名詞のリストで複数形を削除するには?

['bill', 'simpsons', 'cosbys', 'cosby','bills','mango', 'mangoes'] 

このリストからすべての複数形を削除するのが最善とは何ですか? 私は出力になりたいので、一般に

['bill', 'simpsons', 'cosby','mango'] 
+2

シンプソンズは複数ではありませんか? – Dimme

+3

それは、特にあなたが子供、同窓生、およびマウスのような言葉を考えれば、難しいでしょう。ムースや魚のためにあなたは何をしますか? –

答えて

5

、プロセスが `語幹と呼ばれている」と呼ばれるパッケージがある『Python用』ステミングが。これと同じように使用

from stemming.porter2 import stem 
stem("simpsons") 

ステミングは、単に複数形を食い止めるだけではありませんが、あなただけの語幹複数を実行するために起因するパッケージを変更することができます。ソースを見てください:http://tartarus.org/martin/PorterStemmer/python.txt

1

Pluralization rules多くのコーナーケースがあります。おそらく、ルールベースのアプローチをバイパスして、辞書検索を使用して複数形と単語の単数形を識別することができます。

0

追加情報がない限り、これはできません。たとえば、あなたのリストのすべての文字列は英語の単語ですか?彼らは名詞ですか?そうであれば、ほとんどの場合、おそらく良い仕事をするPython用のいくつかのステミング用パッケージがあるようですが、厳密に要件を定義できるほど成功するでしょう。また、リストがユーザーの入力から作成された場合、ユーザーは処理の結果に同意しないことがあります。 「オクトパイ」、「インデックス」などを考慮する。ライブラリは例外的なケースのすべての種類を検討しConway's pluralization rulesを実装

import en 
only_singulars = [w for w in noun_list if w == en.noun.singular(w)] 

:それは2本のだけのラインを取るNodeBox Linguistics

3

関連する問題