やっていること
- Mecab を使った形態素解析
- 辞書は NEologd を指定
- p タグのテキストは、改行もひとつの文章の区切りとして扱う
- ひとつの文章毎、リスト(配列)に入れる
- 力技で名詞と形容詞を抽出して、単語をリストに詰め込む
- 文章毎の単語を、次に返却する用のリストに入れる
単語の集め方についてはもっと良いやり方ができそうだけど、思いつくまま、ほぼ気合で実装。
utils.py
# 抜粋
import MeCab
def getWordList(text):
text_list = []
text_list = text.split("\n")
# 短い文章無視
text_list = [[s] for s in text_list if len(s)>20 ]
mecab = MeCab.Tagger('-d /usr/lib/arm-linux-gnueabihf/mecab/dic/mecab-ipadic-neologd')
contents = []
text_wakachi = []
text_tokenized = []
words_all = []
text_tokenized = []
for items in text_list:
# 改行でひとつの文章の区切りとして扱う
# ひとつの文章毎、リスト(配列)に入れる
text_wakachi = mecab.parse(''.join(items)).split('\n')
words=[]
for w in text_wakachi:
# 力技で名詞と形容詞を抽出して、単語をリストに詰め込む
i1 = w.split('\t')
if len(i1)>1:
if (i1[0] not in ('EOS', '', 't', 'ー') and
i1[1].split(',')[0] in ( '名詞','形容詞') and i1[1] != '数' and
i1[0] not in ('さん','こと','ため','これ','もの','よう')and len(i1[0])>1):
words.append(i1[0])
# 文章毎の単語を、次に返却する用のリストに入れる
text_tokenized.append(words)
return text_tokenized
これが正しいかは今も不明。名詞と形容詞を対象に、ストップワードもベタ打ちで指定。for 文グルグル使っているので目が回りそう。