グループのトーク履歴もあるので,自分なりの以下の方法ではある程度は仕方ないのですが,
replaceの高度利用などで根本的に本文のみ自動抽出できる方法があればお教えください.
現在のフォルダの中にLINEのトーク履歴のテキストファイルが複数あります.
なお少ないのでAPIなどは使わず手動のものです.
それを順番に読み込んでワードクラウドを作ろうとしているのですが,氏名の頻度が高くノイズが入ってしまいます.
対策としてstopとnameという変数で対応を試みましたが,なぜか対応しきれません.
python
1import MeCab 2from matplotlib import pyplot as plt 3from wordcloud import WordCloud 4from glob import glob 5 6word_list = [] 7stop = [] 8 9for file in glob('line/*.txt'): 10 name = file.replace('line[LINE]','') 11 name = name.replace('.txt', '') 12 stop.append(name) 13 14 # テキストファイル読み込み 15 with open(file, mode='rt', encoding='utf-8') as fi: 16 source_text = fi.read() 17 18 # MeCabの準備 19 tagger = MeCab.Tagger() 20 tagger.parse('') 21 node = tagger.parseToNode(source_text) 22 23 # 名詞を取り出す 24 while node: 25 word_type = node.feature.split(',')[0] 26 if word_type == '名詞': 27 word_list.append(node.surface) 28 node = node.next 29 30 # リストを文字列に変換 31 word_chain = ' '.join(word_list) 32 33#氏名削除 34for i in range(len(stop)): 35 word_chain = word_chain.replace(stop[i], '') 36 37# ワードクラウド作成 38W = WordCloud(#max_words = 100, stopwords = stop, 39 width=640, height=480, background_color='white', colormap='bone', 40 font_path='C:\Windows\Fonts\yumin.ttf').generate(word_chain) 41 42plt.figure() 43plt.imshow(W) 44plt.axis('off') 45plt.show()
参考
https://water2litter.net/rum/post/python_wordcloud_jp/
トーク履歴も参考に例示します.
下記のとおり一行目に時間.
その後,時刻,名前,本文の形式で,間にスペースが入ってます.
2021.04.29 木曜日
15:23 田中太郎 Hello World
15:23 python abc