さて、前回
「文中でのクエリの最初の出現位置」
「文中でのクエリの最後の出現位置」
を探索しました(ムリヤリ
今回は
「文中でのクエリの出現位置」のリストを求めます。
さて、はじめます。使うテキストは前回と同じです。
文中でのクエリの出現位置
クエリが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]
まとめ
以外と簡単に実装できました。
僕の研究に役立つといいんですけどね…
課題
今回は
- 文中でのクエリの最初の出現位置
- 文中でのクエリの最後の出現位置
- 文中でのクエリの出現位置のリスト
をやりました。考えられる問題は
- 文書内のどのあたりでクエリが出現しているか
- 文書内のどのあたりでクエリが出現する文が出現するか
くらいですかね。そのうち片付けよう。