ãã¤ã¼ããã¤ãºãç¨ããããã°è¨äºã®èªååé¡
ã«ã¤äºä¹å¤ãç¨ããç¹å¾´é¸æï¼2010/6/25ï¼ã®ç¶ãã§ããä»ã¾ã§ä½¿ã£ã¦ãã20 Newsgroupsã¨ãããã¼ã¿ã¯è±èªææ¸ã§ãã¤å ãã¿ãããåããããã¾ãé¢ç½ããªãã£ãã®ã§ãä»åã¯ãã®ããã°ï¼äººå·¥ç¥è½ã«é¢ããææ³é²ï¼ã®è¨äºãåé¡ãã¦ã¿ã¾ãããã®ããã°ã®åè¨äºã«ã¯ç§ã®å¤æã§ã«ãã´ãªãã¤ãã¦ãã¾ãããã¨ãã°ããã®è¨äºã¯[æ©æ¢°å¦ç¿][èªç¶è¨èªå¦ç]ã§ããã«ãã´ãªã®ãªã¹ãã¯ãã®ããã°ã®å·¦ã¡ãã¥ã¼ã«ããã¾ãããã®åãå°ãæ´çããã®ã§å ¨é¨ã§18ã®ã«ãã´ãªãããã¾ããæ°ããè¨äºãæ¸ããã¨ãèªåã§ã«ãã´ãªãå²ãæ¯ããã¨ã¯ã§ããã®ã§ããããï¼
ï¼æ³¨ï¼ããã°ã©ãã³ã°è¨èªã¯Pythonã使ã£ã¦ãã¾ããã·ãªã¼ãºãã®ã§ä»¥åä½ã£ãã³ã¼ããåå©ç¨ãã¦ãã®ã§æ¤ç´¢ã§é£ãã§ãã人ã¯ãã¤ã¼ããã¤ãºãç¨ããããã¹ãåé¡ï¼2010/6/13ï¼ããé ã«èªãã§ãã ããã
ã¯ã¦ãªãã¤ã¢ãªã¼ãã¼ã¿ã®ãã¦ã³ãã¼ãã¨æ´å½¢
ã¾ããã¯ã¦ãªãã¤ã¢ãªã¼ã®ãã¼ã¿ãå ¨é¨ãã¦ã³ãã¼ããã¦ã¿ã¾ããããã¯ãèªåã®ããã°ãªã管ç>ãã¼ã¿ç®¡ç>ããã°ã®ã¨ã¯ã¹ãã¼ã>Movable Typeå½¢å¼ãããã¦ã³ãã¼ãã§ãã¾ããMovable Typeå½¢å¼ä»¥å¤ã«ã¯ã¦ãªæ¥è¨ãã¼ã¿å½¢å¼ãCSVå½¢å¼ã§ãã¨ã¯ã¹ãã¼ãã§ãã¾ãããMovable Typeå½¢å¼ãä¸çªæ´å½¢ãããããã§ãããç§ã®ããã°ï¼äººå·¥ç¥è½ã«é¢ããææ³é²ï¼ã®ã¨ã¯ã¹ãã¼ããã¼ã¿ã¯aidiary.txtã§ãããã£ããé·å¹´ã«æ¸¡ã£ã¦æ¸ãããã¦ããæãããã¾ããããã£ã3.6MBç¨åº¦ã¨ã¯ã¡ãã£ã¨ã·ã§ãã¯ããããã®ãã¡ã¤ã«ããã¤ã¼ããã¤ãºã®å ¥åãã¡ã¤ã«å½¢å¼ã«å¤æãã¾ããããªãã¡ãä¸ã®ãããªå½¢å¼ã®ãã¡ã¤ã«ã§ãã
ã«ãã´ãª åèª:ã«ã¦ã³ã åèª:ã«ã¦ã³ã ... <- ææ¸1 ã«ãã´ãª åèª:ã«ã¦ã³ã åèª:ã«ã¦ã³ã ... <- ææ¸2 ...
æ´å½¢ã®ãã¤ã³ãã¯ã
- Movable Typeã®ãã¡ã¤ã«ããã¨ã³ããªãã¨ã«ã¿ã¤ãã«ãã«ãã´ãªãæ¥ä»ãæ¬æãæ½åºãã
- ã½ã¼ã¹ã³ã¼ãé¨åã¯æå³ã®ããåèªãå«ã¾ãªãã®ã§ç¡è¦ãã
- ã¿ã¤ãã«ã¨æ¬æããåèªï¼åè©ã¨åºæåè©ã®ã¿ï¼ãå½¢æ ç´ è§£æã§æ½åºãã
- å½¢æ ç´ è§£æã«ã¯MeCab Pythonãç¨ãã
- ã¨ã³ããªãã¨ã«åèªã®åºç¾é »åº¦ãã«ã¦ã³ããã
- ã¨ã³ããªãã¨ã«ã«ãã´ãªã¨åèª:ã«ã¦ã³ãããã¡ã¤ã«ã«åºåãã
- åèªã¯ã«ã¦ã³ãã®éé ã§ã½ã¼ããã
åèã¾ã§ã«å¤æããã°ã©ã ãæ²è¼ãã¾ãããã®å¤æããã°ã©ã ãaidiary.txtã¨åããã©ã«ãã§ããã°ã©ã ãå®è¡ããã¨blog.txtã¨ããå¤æããããã¡ã¤ã«ãã§ãã¾ãããã ãããã®ããã°ã©ã ãåããã«ã¯å¾è¿°ããå½¢æ ç´ è§£æã¢ã¸ã¥ã¼ã«MeCab Pythonã®å°å ¥ãå¿ è¦ã§ãã
#coding:utf-8 import codecs import re import sys from collections import defaultdict # MeCab Pythonã®ã¤ã³ã¹ãã¼ã«ãå¿ è¦ import MeCab """ ã¯ã¦ãªãã¤ã¢ãªã¼ã®ããã°ãã¼ã¿ã®åå¦ç HTMLã¿ã°ã¯é¤å» ããã°ã©ã ã³ã¼ããããã¯ã¯é¤å» """ # ããã°ãã¼ã¿ï¼Movable Typeå½¢å¼ï¼ # èªåã®ããã°ãªã管çã¡ãã¥ã¼ããå ¨æãã¦ã³ãã¼ãå¯ FILE = "aidiary.txt" OUTPUT = "blog.txt" def analysis(tagger, text): """textãMeCabã§å½¢æ ç´ è§£æãã¦åèªã®ãªã¹ããè¿ã""" node = tagger.parseToNode(text.encode("utf-8")) wordList = [] while node: temp = node.feature.split(",") if temp[0] == u"åè©": # ä¸è¬åè©ãåºæåè©ã®ã¿æ½åºãã if temp[1] == u"ä¸è¬" or temp[1] == u"åºæåè©": wordList.append("%s" % node.surface) node = node.next return wordList if __name__ == "__main__": # å½¢æ ç´ è§£æå¨ tagger = MeCab.Tagger("-Ochasen") # å±æ§æ½åºç¨ã®æ£è¦è¡¨ç¾ htmlTagPattern = re.compile(r'<.*?>') titlePattern = re.compile(r'TITLE:\s(.*)') categoryPattern = re.compile('CATEGORY:\s(.*)') datePattern = re.compile(r'DATE:\s(.*)') bodyPattern = re.compile(r'BODY:') codeStartPattern = re.compile(r'<pre class="syntax-highlight">') codeEndPattern = re.compile(r'</pre>') fin = codecs.open(FILE, "r", "utf-8") fout = codecs.open(OUTPUT, "w", "utf-8") title = category = date = body = "" bodyflg = codeflg = False for line in fin: line = line.rstrip() # æ«å°¾æ¹è¡é¤å» line = line.replace("\t", "") # ã¿ãæåé¤å» if line == "": continue # ã¿ã¤ãã«ã®æ½åº m = titlePattern.match(line) if m: title = m.group(1) # ã«ãã´ãªã®æ½åºï¼2ã¤ä»¥ä¸ããå ´åã¯1ã¤ç®ã®ã¿ï¼ m = categoryPattern.match(line) if m and category == "": category = m.group(1) # æ¥ä»ã®æ½åº m = datePattern.match(line) if m: date = m.group(1) # 02/21/2002 05:30:47 PM date = date.split(" ")[0] # 02/21/2002 month, day, year = [int(x) for x in date.split("/")[0:3]] date = "%04d-%02d-%02d" % (year, month, day) # 2002-02-21 # ããã°ã©ã ã³ã¼ãè¡ãè¦ã¤ãã£ããcodeflgãç«ã¦ã m = codeStartPattern.match(line) if m: codeflg = True # ããã°ã©ã ã³ã¼ãçµäºè¡ãè¦ã¤ãã£ããcodeflgãä¸ãã m = codeEndPattern.match(line) if m: codeflg = False # bodyflg = Trueã§ã³ã¼ãè¡ä»¥å¤ãªãæ¬æè¡ãªã®ã§bodyã«è¿½å if bodyflg and not codeflg and line != "-----": # HTMLã¿ã°ãé¤å»ãã¦è¿½å body = body + ' ' + htmlTagPattern.sub("", line) # æ¬æçµäºè¨å·ãè¦ã¤ãã£ãã1ã¨ã³ããªåã®ãã¼ã¿ãåºå if bodyflg and line == "-----": # ã¿ã¤ãã«ã¨æ¬æãå½¢æ ç´ è§£æãã¦åèªãæ½åº wordList = analysis(tagger, title + body) # åèª:ã«ã¦ã³ãã®å½¢å¼ã§åºåããããã«åèªãã«ã¦ã³ã wc = defaultdict(int) for w in wordList: wc[w] += 1 # ã«ã¦ã³ãã§éé ã½ã¼ã lst = wc.items() lst.sort(lambda p0,p1: cmp(p1[1],p0[1])) # ãã¡ã¤ã«ã«åºå words = [] for k, v in lst: words.append("%s:%d" % (k, v)) print category, " ".join(words) fout.write("%s %s\n" % (category, " ".join(words))) bodyflg = False title = category = date = body = "" # æ¬æãè¦ã¤ãã£ãããã©ã°ãç«ã¦ãï¼æ¬¡ã®è¡ããbodyã«è¿½å ï¼ m = bodyPattern.match(line) if m: bodyflg = True fout.close() fin.close()
MeCab Python
å½¢æ ç´ è§£æã«ã¯MeCabã®ã¤ã³ã¹ãã¼ã«ãå¿ è¦ã§ããMeCabã¯é«æ§è½ãªå½¢æ ç´ è§£æã¢ã¸ã¥ã¼ã«ã§PythonãRubyãPerlãJavaãªã©ãã¾ãã¾ãªè¨èªãã使ãã¾ããMac OS Xã¨Linuxã§ã¯ç°¡åã«ã³ã³ãã¤ã«ãã¦ã¤ã³ã¹ãã¼ã«ãã§ãããã§ãããWindowsã§ã¯MinGWãVisual Studioã®ã¤ã³ã¹ãã¼ã« & ã³ã¼ãã®ä¿®æ£ãå¿ è¦ã§ããªãé¢åããããããã§ãPythonã¢ã¸ã¥ã¼ã«ã¯id:fgshunãããã³ã³ãã¤ã«ãããã¤ããªã使ããã¦ãããã¾ããã以ä¸ãå°å ¥æ¹æ³ã§ãã
- MeCabの本サイトã§ãã¦ã³ãã¼ãããWindowsçã®mecab-0.98.exeãã¤ã³ã¹ãã¼ã«ï¼è¾æ¸ã¯UTF-8å½¢å¼ãç¡é£ã§ãï¼
- å½¢æ ç´ è§£æã¨ã³ã¸ã³ MeCab 0.98pre3 éè¯ãã«ããããã¦ã³ãã¼ãããlibmecab-1.dllãMeCab.pyã_MeCab.pydãããã±ã¼ã¸ãã©ã«ãï¼Python2.5ãªãC:\Python25\Lib\site-packagesï¼ã«ã³ãã¼ãIPAè¾æ¸ã¯mecab-0.98.exeã§ã¤ã³ã¹ãã¼ã«ããã®ã§ä¸è¦ã
id:fgshunããã¯Taggerã«mecabrcãã¡ã¤ã«ãæå®ãã¦ã¾ãããæå®ããªãã¨ããã©ã«ãã§C:\Program Files\MeCab\etc\mecabrcãèªã¿ã«ãããããªã®ã§mecab-0.98.exeã§IPAè¾æ¸ãã¤ã³ã¹ãã¼ã«ããã»ããç°¡åã ã¨æãã¾ããä¸ã®ãµã³ãã«ããã°ã©ã ãåãã確ããã¦ã¿ã¾ãã
#coding:utf-8 import MeCab s = u"å½¢æ ç´ è§£æã«ã¯MeCabã使ã£ã¦ããã®ã§ä¸ã®ããã°ã©ã ãåããã«ã¯äºåã«ã¤ã³ã¹ãã¼ã«ãå¿ è¦ã§ã" tagger = MeCab.Tagger('-Ochasen') node = tagger.parseToNode(s.encode('utf-8')) wordList = [] while node: if node.feature.split(",")[0] == u"åè©": wordList.append(node.surface) node = node.next for word in wordList: print word
å®è¡ããã¨åè©ã®ã¿ãæ½åºããã¦åºåããã¾ãã
å½¢æ ç´ è§£æ MeCab ä¸ ããã°ã©ã äºå ã¤ã³ã¹ãã¼ã« å¿ è¦
MeCabã¯ã¾ã使ããããªã®ã§ãã¨ã§ã¾ã¨ãã¨ããããªãå½¢æ ç´ è§£æã«ã¯MeCabã§ã¯ãªããYahoo!å½¢æ ç´ è§£æAPIï¼2009/4/15ï¼ãç¨ãã¦ãããã¨æãã¾ããYahoo!ã¯MeCabããåºæ表ç¾ã®æ½åºç²¾åº¦ãé«ãããã«æãã¾ãã
ã«ãã´ãªåå¸
ã§ã¯ã話ã¯ãã¤ã¼ããã¤ãºã«æ»ãã¾ããã¾ããã«ãã´ãªãã¨ã«åè¨äºãã©ãããããããçµ±è¨ãåã£ã¦ã¿ã¾ãããè¨äºã«è¤æ°ã®ã«ãã´ãªãããå ´åã¯ç¬¬ä¸ã«ãã´ãªã®ã¿ä½¿ã£ã¦ãã¾ããã«ãã´ãªåå¸ã¯ä¸ã®ããã«ãªãã¾ããã20 Newsgroupsï¼2010/6/18ï¼ã¨éã£ã¦ããªãã°ãã¤ããããã¾ããä¸è¬çã«ã«ãã´ãªéã®ã°ãã¤ãã大ããã¨ç²¾åº¦ãä½ä¸ãããã¨ãç¥ããã¦ãã¾ããã¡ãã£ã¨å¿é ã«ãªã£ã¦ããã
ç¹å¾´èªæ½åº
次ã«åã«ãã´ãªã§ç¸äºæ å ±éï¼2010/6/19ï¼ãé«ãä¸ä½10åã®åèªãæ½åºãã¦ã¿ã¾ãã
[人工ç¥è½] 0.0668466792518 ç¥è½ 0.0605570522974 人工 0.032089567665 å¦ä¼ 0.0254121860825 æ代 0.0253081836479 AI 0.0185970342997 æè¡ 0.0182707784424 Norvig 0.0178956959728 æ©æ¢° 0.0160822792793 åé 0.013954708507 åº·ä¸ [æ©æ¢°å¦ç¿] 0.0554374306209 ãã¤ãº 0.0487473103335 ãã¼ã¿ 0.0463269427927 å¼ 0.0431790653499 æå° 0.0431790653499 w 0.0430882201539 ãã¯ãã« 0.0362336163557 ç·å½¢ 0.0357786049225 ãã¿ã¼ã³ 0.0295890551301 誤差 0.0276829622679 t [èªç¶è¨èªå¦ç] 0.0407276053721 å½¢æ ç´ 0.0305270697973 Google 0.0209781544664 ãã«ã³ã 0.0209781544664 ã³ã³ãã³ã 0.0198496993147 åè© 0.0198496993147 ã¹ãã¤ãã¼ 0.0176073150915 Web 0.0174213092901 é£é 0.0174213092901 Hacks 0.0174213092901 Eliza [ãããã£ã¯ã¹] 0.0836949238735 ãããã 0.038853580853 AIBO 0.0300575326888 ã»ã³ãµã¼ 0.0278687435843 ROBODEX 0.0225409242532 ãã¥ã¼ããã¤ã 0.0173236338447 ããã«ãã 0.0173236338447 ã¤ã³ããªã¸ã§ã³ã¹ã»ãã¤ããã¯ã¹ 0.0158608128224 æ¥è¨ 0.0149268606495 QRIO 0.0125190099368 ç£æ¥ [å²å¦] 0.0696987261079 å²å¦ 0.0466277158515 ã²ã¼ãã« 0.0433229397643 ããã 0.0433229397643 ã¨ãã·ã£ã¼ 0.0402016652066 ããã¹ã¿ãã¿ã¼ 0.0293236094059 ãã¬ã¤ãã¡ã¹ 0.0293236094059 ãã°ã©ã¹ 0.0278300807178 ã³ã³ãã¥ã¼ã¿ 0.0230329975586 å®ç 0.0222695028808 æ [èªç¥ç§å¦] 0.0344178968077 å¿ç 0.0291007471038 åç© 0.0215349075037 ç§å¦ 0.0158318961015 èº«ä½ 0.0148852974513 èªèº« 0.0140415540977 ãã 0.0131966937095 ç¸äº 0.0129084130782 ç¬ 0.0126732630125 ã²ã¼ã 0.0124394410983 å ±é ¬ [å¼·åå¦ç¿] 0.0821109858052 å ±é ¬ 0.072511052999 ã¨ã¼ã¸ã§ã³ã 0.0702965495728 è¿·è·¯ 0.0470118931038 Reinforcement 0.0469046359785 Q 0.0381829229148 æ¯å 0.0380810498439 ç¶æ 0.0371525790713 ã¨ãã½ã¼ã 0.0325025838501 ããã° 0.0309618292129 ãã¼ãã« [è¤éç³»] 0.047560226878 ä¹±æ° 0.0422215036047 ç¾è±¡ 0.0407280367457 ã©ã³ãã 0.0303254834174 æ¬ä¼¼ 0.0303254834174 ã¹ã¢ã¼ã« 0.025055107977 ã¯ã¼ã«ã 0.0232314372039 ã«ãªã¹ 0.0189085366345 æåç· 0.0189085366345 ã¨ã³ãããã¼ 0.0183085362125 確ç [è³ç§å¦] 0.114387617974 è³ 0.0314007895288 ã³ã³ãã¥ã¼ã¿ã¼ 0.0201049064124 æ£è 0.0196755440911 å¤§è³ 0.0161414204785 èæ¨ 0.0143327777787 ç§å¦ 0.0133952718291 å¥ä¸é 0.0124255845359 ã¤ãªãã 0.0122488069338 海馬 0.0108136899383 çæ©æ¸æ¿ [çç©å¦] 0.0311204925831 ãã¤ãªã¤ã³ãã©ããã£ã¯ã¹ 0.0304531477327 ç´°è 0.025867712687 çç© 0.0160213110636 åç© 0.0133887567948 çå½ 0.0130598253523 è¦æ¹ 0.0130598253523 åä½ 0.0104193172884 éºä¼å 0.00996531603537 çãç© 0.00927583404748 ãã
ããããããå°å³ã ãã©ãã£ããããããã
交差æ¤å®ï¼Cross Validation)
æå¾ã«ãã¤ã¼ããã¤ãºã®åé¡ç²¾åº¦ãè©ä¾¡ãã¦ã¿ã¾ãã20 Newsgroupsã¯ææ¸æ°ã20000件ã¨å¤ãã£ãã®ã§è¨ç·´ãã¼ã¿ã¨ãã¹ããã¼ã¿ãå®å ¨ã«åãã¦ããåé¡ç²¾åº¦ãè©ä¾¡ãã¾ãããããããããã°è¨äºã¯å ¨é¨ã§760件ãããªãã®ã§ç¬ç«ãããã¹ããã¼ã¿ãç¨æããã®ã¯å°ããã£ãããªãã§ããããã§ã交差æ¤å®ï¼N-fold Cross Validationï¼ã¨ããè©ä¾¡æ³ã使ã£ã¦ã¿ã¾ããN-foldã®ä»£ããã«K-foldã使ããã¨ãå¤ãããã§ããããã§ã«ããã£ãã©ãªã®æ°ã§æåKã使ã£ã¦ãã¾ã£ãã®ã§ä»£ããã«Nã使ãã¾ãããN-fold Cross Validationã¯å ¨ãã¼ã¿ãåçã«Nåå²ãããã®ä¸ãã1åããã¹ããã¼ã¿ã¨ããæ®ãã®N-1åãè¨ç·´ãã¼ã¿ã¨ããè©ä¾¡æ³ã§ãããã¹ããã¼ã¿ã®é¸ã³æ¹ã¯NéãããããNéãã®è¨ç·´ãã¼ã¿ã¨ãã¹ããã¼ã¿ã®ããããã§åé¡ç²¾åº¦ãæ±ããæå¾ã«å¹³åãåã£ã¦æçµç²¾åº¦ã¨ãããã¨ãå¤ãã§ããã¡ãªã¿ã«åå²æ°Nããã¼ã¿æ°ã¨åãã«ããå ´åã¯Leave-one-outã¨å¼ã³ã¾ãã
ã§ã¯ãCross Validationã®ã³ã¼ãã§ããRecipe 521906: K fold cross validation partition (Python)ã®ã³ã¼ããåèã«ãã¾ãããå°ä½ã使ã£ã¦ãã¼ã¿ãåããã®ã¯ãã£ãããã¾ãããæ¹ã ãªããä¸ã®ã³ã¼ããåããã«ã¯ç¸äºæ å ±éãç¨ããç¹å¾´é¸æï¼2010/6/19ï¼ã§ä½ã£ããã¤ã¼ããã¤ãºï¼naivebayes_fs.pyï¼ã¨ç¹å¾´é¸æï¼feature_selection.pyï¼ãå¿ è¦ã§ããããã£ãã©ãªã®æ°ã¯é©å½ã«1000ã¨ãã¾ããï¼ç¸äºæ å ±éãé«ãé ã«1000èªã使ãã¾ãï¼ã
#coding:utf-8 import codecs import sys from naivebayes_fs import NaiveBayes # ç¹å¾´é¸æä»ãã®ãã¤ã¼ããã¤ãºã使ã from pylab import * # ç¹å¾´æ½åºã«ä½¿ãåèªæ° K = 1000 def crossValidation(data, N=5, randomize=False): """N-fold Cross Validationã§åé¡ç²¾åº¦ãè©ä¾¡""" # ãã¼ã¿ãã·ã£ããã« if randomize: from random import shuffle shuffle(data) # N-fold Cross Validationã§åé¡ç²¾åº¦ãè©ä¾¡ accuracyList = [] for n in range(N): # ååå²ã«ã¤ã㦠# è¨ç·´ãã¼ã¿ã¨ãã¹ããã¼ã¿ã«ããã trainData = [d for i, d in enumerate(data) if i % N != n] testData = [d for i, d in enumerate(data) if i % N == n] # ãã¤ã¼ããã¤ãºåé¡å¨ãå¦ç¿ nb = NaiveBayes(K) nb.train(trainData) print nb # ãã¹ããã¼ã¿ã®åé¡ç²¾åº¦ãè¨ç® hit = 0 numTest = 0 for d in testData: correct = d[0] words = d[1:] predict = nb.classify(words) if correct == predict: hit += 1 numTest += 1 accuracy = float(hit) / float(numTest) accuracyList.append(accuracy) # Nåã®å¹³å精度ãæ±ãã print accuracyList average = sum(accuracyList) / float(N) return average if __name__ == "__main__": # ããã°ãã¼ã¿ããã¼ã data = [] fp = codecs.open("blog.txt", "r", "utf-8") for line in fp: line = line.rstrip() temp = line.split() data.append(temp) fp.close() # N-fold Cross Validationã§åé¡ç²¾åº¦ãè©ä¾¡ average = crossValidation(data, N=10, randomize=True) print "accuracy:", average
å®è¡ããã¨
accuracy: 0.651315789474
20 Newsgroupsã¯80%ã ã£ãã®ã§å°ãè½ã¡ã¾ããã©æã£ã¦ããããé«ããªãã
ã¾ã¨ã
ä»åã¯ãæ¥æ¬èªã®ããã°è¨äºã®ãã¼ã¿ããã¤ã¼ããã¤ãºã§åé¡ãã¦ã¿ã¾ãããå®ãã¼ã¿ããããã¼ã¿æ°ã®åãã大ããã£ãã§ãããããããªåé¡ç²¾åº¦ãåºã¾ãããä»åã¯ããã£ãã©ãªæ°ã¨ãæ½åºããå½¢æ ç´ ã®åè©é¸æã¨ãããªãé©å½ãªã®ã§æ¬æ¥ãªããã£ã¨ã¡ããã¨ããæ¤è¨¼ãå¿ è¦ã§ããã¨ã¯è¨ããªããã次åã¯PRMLã§å¦ãã ï¼2010/5/3ï¼ãµãã¼ããã¯ãã«ãã·ã³ï¼SVMï¼ã使ã£ã¦ããã°è¨äºãåé¡ãã¦ã¿ã¾ããSVMã¯ããã¹ãåé¡ã§é«ç²¾åº¦ãå©ãåºããã¨ã§æåãªææ³ã§ããã©ãããã精度ãä¸ããã楽ãã¿ã ãªãã