nltkを使ってみた 単語の出現位置(続き

さて、前回
「文中でのクエリの最初の出現位置」
「文中でのクエリの最後の出現位置」
を探索しました(ムリヤリ
今回は
「文中でのクエリの出現位置」のリストを求めます。
さて、はじめます。使うテキストは前回と同じです。

文中でのクエリの出現位置

クエリが1単語の場合

query = "language"
#非正規化版
pos = [i for sent_tok in tokens for i, tok in enumerate(sent_tok) if query == tok]
#正規化版
pos = [float(i)/len(sent_tok) for sent_tok in tokens for i, tok in enumerate(sent_tok) if tok == query]

クエリがn単語の場合

#非正規化版
pos = [i for ngram_tok in [nltk.ngrams(sent_tok, n) for sent_tok in tokens] for i, tok in enumerate(ngram_tok) if tuple(query_tok) == tok]
#正規化版
pos = [float(i) / (len(ngram_tok)+n-1) for ngram_tok in [nltk.ngrams(sent_tok, n) for sent_tok in tokens] for i, tok in enumerate(ngram_tok) if tuple(query_tok) == tok]

まとめ

以外と簡単に実装できました。
僕の研究に役立つといいんですけどね…

課題

今回は

  • 文中でのクエリの最初の出現位置
  • 文中でのクエリの最後の出現位置
  • 文中でのクエリの出現位置のリスト

をやりました。考えられる問題は

  • 文書内のどのあたりでクエリが出現しているか
  • 文書内のどのあたりでクエリが出現する文が出現するか

くらいですかね。そのうち片付けよう。

コメントを残す