1. 程式人生 > >TextGrocery短文字分類使用

TextGrocery短文字分類使用

TextGrocery是一個基於LibLinear和結巴分詞的短文字分類工具,特點是高效易用,同時支援中文和英文語料。
GitHub專案連結

1、安裝

通過GitHub(最新版本)
git clone https://github.com/2shou/TextGrocery.git --depth=1
cd TextGrocery
make

2、通過pip(更穩定)

pip install tgrocery -i http://pypi.douban.com/simple  (這是國內的映象源)

3、樣本資料: train_ch.txt

music:你想幹什麼
music:星火燎原
music:
日出(live版) music:給我感覺(live版) music:High High High(live版) music:姊妹(live版) music:站在高崗上(live版) music:感應(live版) music:了不起(live版) poem:中秋夜 poem:上堂開示頌 poem:從軍行 poem:丹陽送韋參軍 poem:烏衣巷 poem:出塞 poem:別董大 poem:劍客 poem:蘭溪棹歌 why:大飛機為什麼怕小鳥 why:臭鼬怎麼保護自己 why:冬天_嘴裡為什麼冒白氣 why:春季天空中飄的小白花是什麼 why:冬天為什麼會凍傷呢 why:飛機駕駛員怎樣知道飛機的飛行高度 why:
冬暖夏涼的井水 qa:你老家在哪? qa:你從哪裡來? qa:你爸爸呢? qa:你媽媽呢? qa:你爸爸對你好嗎? qa:你媽媽對你好嗎?

4、 部署一個server.py指令碼

#-*- coding:utf-8 -*-
import BaseHTTPServer
import urllib

from tgrocery import Grocery
grocery = Grocery('hello')
grocery.train('train_ch.txt',':')
grocery.save()
new_grocery = Grocery('hello')
new_grocery.load()


class
RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
'''處理請求並返回頁面''' # 頁面模板 Page = '''cccccc ''' # 處理一個GET請求 def do_GET(self): #print self.path.split('/')[-1] retText = classify(self.path.split('/')[-1]) print retText self.send_response(200) #self.send_header("Content-Type", "text/html") self.send_header('Content-Type', 'application/json') self.send_header("Content-Length", str(len(retText))) self.end_headers() self.wfile.write(retText) #---------------------------------------------------------------------- def classify(text): input_txt = urllib.unquote(text) predict_result = new_grocery.predict(input_txt) output_txt = predict_result.predicted_y dict = predict_result.dec_values if dict[predict_result.predicted_y] < 0.15 : output_txt = '' return output_txt #---------------------------------------------------------------------- if __name__ == '__main__': #啟動: nohup python server.py > server.log 2>&1 & try: serverAddress = ('', 8181) server = BaseHTTPServer.HTTPServer(serverAddress, RequestHandler) server.serve_forever() except KeyboardInterrupt: print '^C received ,shutting down server'