トップ «前の日記(2013-01-07) 最新 次の日記(2013-01-09)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|

2013-01-08 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1710 退勤

_

1900 機械学習ほげ

2130 飯。ブリの照り焼き

_ 胃が重い

昨日の昼飯を 鳥元 ミューザ川崎店 で鶏のから揚げらしきものを食べたんだが、それ以来 胃が重い。ずーっと満腹感が続いている。腹減らない。そばにしておくべきだったかなあ。

_ [k近傍法][ネガポジ][自然言語処理][機械学習]k近傍法もどきで文章をネガポジ判定してみた

辞書

ネガポジ辞書はこちらを使った。名詞と用言があるのだが両方使った。

公開資源/日本語評価極性辞書 - 東北大学 乾・岡﨑研究室

k近傍法

332パターン認識

k近傍法(k - Nearest Neighbor)は目的のわからないデータから、全既知データまでの距離を測ります。そして距離の短い順k個で多数決し判断します。k近傍法(k - Nearest Neighbor)は目的のわからないデータから、全既知データまでの距離を測ります。

kNN法とか呼ばれるアレ。

実装

距離を測るのが正攻法なんだけど、今回使うネガポジ辞書を全ての単語への距離を 1 とみなして処理しておく。処理が簡単になる。

また、ポジティブを +1 、ネガティブを -1 とし、たんに文章のポジティブ、ネガティブの点数を数えるようにした。k近傍の由来の k個の近傍を処理していないので k近傍ですらないか。

コード

前処理とかいろいろ省略。

#!/usr/bin/ruby

# -*- encoding: utf-8 -*-

require 'pp'

class Dictionary

  attr_accessor :item

  def initialize(v_dic, n_dic)
 
    @item ||= {}
    
    v_dic = verb_dictionary(v_dic)
    n_dic = noun_dictionary(n_dic)
    @item.update(v_dic)
    @item.update(n_dic)
  end


  # 識別辞書 日本語評価極性辞書(用言編)
  def verb_dictionary(filepath)
    dic ||= {}
 
    lines = File.open(filepath).readlines()
    lines.each {|line|
      line.rstrip!

      sp = line.split(/\t/)
 
      tag = sp[0]
      pn = tag[0] + tag[1]
      
      # 単語が書いてない行があるので無視する
      verb = sp[1]
      next if verb == nil

      verb.gsub!(/ /, '')
      
      score = 0
      if pn == "ポジ"
        score = 1
      elsif pn == "ネが"
        score = -1
      end
      
      dic[verb] = score
    }
    return dic
  end
 
  # 識別辞書 日本語評価極性辞書(名詞編)
  def noun_dictionary(filepath)
    dic ||= {}
 
    lines = File.open(filepath).readlines()
    lines.each {|line|
      sp = line.split(/\t/)
      
      noun = sp[0]
      pn = sp[1]
      
      score = 0
      if pn == "p"
        score = 1
      elsif pn == "n"
        score = -1
      else
        score = 0
      end
 
      dic[noun] = score
    }
 
    return dic
 
  end


end


class KNN

  def initialize(dictionary)
    @dictionary = dictionary
  end

  # 前処理部
  def pretreatment(statement)
  end
 
  # 特徴抽出部
  def extraction(statement)
  end
 
  # 識別部
  def identification(statement)

    score = 0

    @dictionary.item.each {|word, pn|
      hits = statement.scan(word).size
      score += (pn * hits)
    }

    if score > 0
      return "ポジティブ"
    elsif score < 0
      return "ネガティブ"
    else
      return "ニュートラル"
    end
  end
 
  def build(statement)
    pretreatment(statement)
    extraction(statement)
    identification(statement)
  end
 

end

def main(argv)
  verb_dic_path = argv[0]
  noun_dic_path = argv[1]
  statement = argv[2]
 
  dictionary = Dictionary.new(verb_dic_path, noun_dic_path)

  knn = KNN.new(dictionary)
  pn = knn.build(statement)

  puts "#{pn}"
 

end

main(ARGV)

実行

死にたくない。

% ruby193 -Ku kNN.rb ./NLP/dic/wago.121808.pn ./NLP/dic/pn.csv.m3.120408.trim 死にたい
ネガティブ

じつはツンデレ?

% ruby193 -Ku kNN.rb ./NLP/dic/wago.121808.pn ./NLP/dic/pn.csv.m3.120408.trim 働きたくないでござる
ポジティブ

ルイズコピペ (クンカクンカ/ 同人用語の基礎知識)

% ruby193 -Ku kNN.rb ./NLP/dic/wago.121808.pn ./NLP/dic/pn.csv.m3.120408.trim ルイズ!ルイズ!ルイズ!ルイズぅぅうううわぁああああああああああああああああああああああん!!!あぁああああ…ああ…あっあっー!あぁああああああ!!!ルイズルイズルイズぅううぁわぁああああ!!!あぁクンカクンカ!クンカクンカ!スーハースーハー !スーハースーハー!いい匂いだなぁ…くんくんんはぁっ!ルイズ・フランソワーズたんの桃色ブロンドの髪をクンカクンカしたいお!クンカクンカ!あぁあ!!間違えた!モフモフしたいお!モフモフ!モフモフ!髪髪モフモフ!カリカリモフモフ…きゅんきゅんきゅい!!小説11巻のルイズたんかわいかったよぅ!!あぁぁああ…あああ…あっあぁああああ!!ふぁぁあああんんっ!!アニメ2期決まって良かったねルイズたん!あぁあああああ!かわいい!ルイズたん!かわいい!あっああぁああ!コミック2巻も発売されて嬉し…いやぁああああああ!!!にゃああああああああん!!ぎゃああああああああ!!ぐあああああああああああ!!!コミックなんて現実じゃない!!!!あ…小説もアニメもよく考えたら…ル イ ズ ち ゃ ん は 現実 じ ゃ な い?にゃあああああああああああああん!!うぁああああああああああ!!そんなぁああああああ!!いやぁぁぁあああああああああ!!はぁああああああん!!ハルケギニアぁああ ああ!!この!ちきしょー!やめてやる!!現実なんかやめ…て…え!?見…てる?表紙絵のルイズちゃんが僕を見てる?表紙絵のルイズちゃんが僕を見てるぞ!ルイズちゃんが僕を見てるぞ!挿絵のルイズちゃんが僕を見てるぞ!!アニメのルイズちゃんが僕に話しかけてるぞ!!!よかった…世の中まだまだ捨てたモンじゃないんだねっ!いやっほぉおおおおおおお!!!僕にはルイズちゃんがいる!!やったよケティ!!ひとりでできるもん!!!あ、コミックのルイズちゃああああああああああああああん!!いやぁあああああああああああああああ!!!! あっあんああっああんあアン様ぁあ!!セ、セイバー!!シャナぁああああああ!!!ヴィルヘルミナぁあああ!!ううっうぅうう!!俺の想いよルイズへ届け!!ハルケギニアのルイズ へ届け!
ポジティブ

さすが、ポジティブですと (・ω・)

_ 買い物

amazon

(´・ω・`)

4774153516