2016-09-19 9 views
0

利用可能なnltk辞書のいくつか、つまりスペイン語辞書を繰り返し処理できるかどうかを知りたいと思います。私はいくつかの要件に合った特定の単語を見つけたいと思います。nltk辞書を繰り返してください

私はこのリスト["tv", "tb", "tp", "dv", "db", "dp"]を得たとしましょう、アルゴリズムは["tapa", "tubo", "tuba", ...]のような言葉を私に与えるでしょう。あなたが見ることができるようにあなたがそれらの単語に母音を取り除く場合、彼らは最初のリストになります:

  • タパ=> TP
  • TUBO => TB
  • チューバ=> TB

とにかく、私はちょうどそれがNLTK辞書や方法についてのスペイン語の単語を反復処理することができますかどうかを知りたい、それはかなりのだ

+0

私は(ただし、文法のリソースがある)スペイン語辞書とNLTKの船があればわかりません。存在する場合、おそらくコーパスオブジェクトの '.words()'メソッドを使って、おそらくエントリを繰り返し処理できます。 – lenz

答えて

1

NLTKは、スペイン語のリソースの多くを持っているが、私は辞書を認識していませんよ。だから私はあなたに単語リストの選択肢を残し、そこから行くでしょう。

一般に、nltkは単語リストを個々の単語に対して通常の方法words()でコーパスリーダーとして表します。英語の単語リストであなたのテンプレートと一致する単語を見つける方法は次のとおりです。

templates = set(["tv", "tb", "tp", "dv", "db", "dp"]) 
for w in nltk.corpus.words.words("en"): 
    <remove vowels and check if it is in `templates`> 

スペイン語のストップワードリストがあります。

for w in nltk.corpus.stopwords.words("spanish"): 
    ... 

また、スペイン語コーパスから独自の「単語リスト」を作成することもできます。私はこの目的のための最良のデータ構造がセットなので、恐怖の引用符を使用しました。 Pythonでは、あなたにその鍵を与えるsetdictを反復処理:

mywords = set(w.lower() for w in nltk.corpus.conll2002.words("esp.train")) 
for w in mywords: 
    ... 
+0

312語は**ストップワード**であり、通常の語彙ではありません。英語のリストはほぼ同じサイズです。 http://www.nltk.org/nltk_data/でダウンロード可能なnltkデータリソースのリストをご覧ください(これはnltk.corpusの読者のリストではありません)。もちろん、あなたはnltkのリソースに限定されません。あなた自身のコードを使ってどこからでも自分のコーパスを見つけて読み込むことができます。 – alexis

+0

私はあなたのコマンドを誤読しました。** stopword **リストと完全な辞書を比較することを期待していませんでした。私の前のコメントを編集しました – alexis

+0

私はあなたが 'spanish_grammars'で大きなボキャブラリーを見つけられないと確信しています。私が例として使用したCONLLコーパスは、あなたに約23,000の異なる単語を与えます(しかし、ある割合は実際の言葉ではありません)。まずそれを試してみてください。 – alexis

関連する問題