TextGrocery短文字分類使用
阿新 • • 發佈:2018-12-31
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'