앙케이트 조사 데이터를 분석해 본다【제4회:감정 분석】

이번에는 앙케이트의 답변 데이터를 사용하여 감정 분석에 도전하고 싶습니다. 감정 분석을 실시함으로써, 자유 응답중의 어구로부터, 응답자의 태도가 포지티브인지 네거티브인지를 판정합니다.

이번에도 이하 URL보다, 「전자판 약 수첩을 사용하고 싶은 이유」에 관한 자유 회답 데이터를 사용합니다.

「전자판 약 수첩에 관한 의식 조사」를 실시했습니다
htps //w w. 니쵸. 이. jp/코 r 포라테/네 ws 레아세/11633/

① 우선 라이브러리를 가져옵니다. 이번에는 janome을 사용합니다.
import csv
from janome.tokenizer import Tokenizer

②다음에 「일본어 평가 극성 사전」을 다운로드해, ​​읽어들입니다. 이것은, 어구의 판정에 사용하는 단어 사전의 것으로, 예를 들면 「성실」은 포지티브, 「약기」는 네거티브라고 하는 것처럼, 약 8,500의 표현에 대해 포지티브인지 네거티브의 연결이 되어 있습니다(아래와 같이 URL 참조).
! curl http://www.cl.ecei.tohoku.ac.jp/resources/sent_lex/pn.csv.m3.120408.trim > pn.csv

np_dic = {}
fp = open("pn.csv", "rt", encoding="utf-8")
reader = csv.reader(fp, delimiter='\t')
for i, row in enumerate(reader):
  name = row[0]
  result = row[1]
  np_dic[name] = result
  if i % 500 == 0: print(i)

③대상 데이터에 대해서 형태소 해석을 실시, 각 어구와 상기의 사전을 대조합니다. 아래의 코드 중, 「p」는 포지티브, 「n」은 네거티브, 「e」는 어느 쪽도 아닌 중립적인 어구를 가리키고 있어, 각각을 카운트해, 포지티브도와 네거티브도를 판정합니다.
df = open("survey3.txt", "rt", encoding="utf-8")
text = df.read()

tok = Tokenizer()

res = {"p":0, "n":0, "e":0}
for t in tok.tokenize(text):
  bf = t.base_form
  if bf in np_dic:
    r = np_dic[bf]
    if r in res:
      res[r] += 1

print(res)
cnt = res["p"] + res["n"] + res["e"]
print("Positive", res["p"] / cnt)
print("Negative", res["n"] / cnt)

결과는 다음과 같습니다. 「전자판 약수첩을 사용하고 싶은 이유」에 관한 회답인 만큼, 역시 포지티브도가 높은 결과가 되고 있습니다.



덧붙여서 이 조사에서는, 「전자판 약수첩을 사용하고 싶지 않은 이유」에 대해서도 조사하고 있습니다. 이 데이터에서 비슷한 분석을 하면 어떻게 될까요?



결과는 이렇게 되었다. "사용하고 싶지 않은 이유"에도 불구하고 긍정도가 부정도를 초과합니다. 원래의 회답 데이터를 보면, 「종이의 수첩 쪽이 좋다」라고 하는 회답도 산견되어, 위와 같은 결과가 되어 버린 것 같습니다. 이 근처는 앙케이트 설계에도 관련되어 오는 부분이 되어, 텍스트 마이닝의 실시를 전제로 하고 있는 경우는 유의가 필요하게 될 것 같습니다.

참고 사이트



무제한의 인터넷 소설을 네거티브 포지션 판정으로 평가합시다.
htps // // 네 ws. my ゔぃ. jp/아리치ぇ/제로 py 텐-58/

좋은 웹페이지 즐겨찾기