- Notifications
You must be signed in to change notification settings - Fork11
License
NotificationsYou must be signed in to change notification settings
shogo82148/TinySegmenterMaker
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
TinySegmenter用の学習モデルを自作するためのツール.
スペースで分かち書きしたコーパスをあらかじめ準備しておきます.コーパスから分かち書きの情報と素性を取り出します.
$ ./extract< corpus.txt> features.txt
AdaBoostを用いて学習します.新しい弱分類器の分類精度が0.001以下,繰り返し回数が10000回以上となったら学習を終了します.
$ g++ -O3 -o train train.cpp# コンパイル$ ./train -t 0.001 -n 10000 features.txt model# 学習
きちんと分割できるか実際に試してみます.
$ ./segment model私の名前は中野です私 の 名前 は 中野 です
学習プログラム train はマルチスレッドに対応しています.コンパイルにはboostが必要です.
$ g++ -DMULTITHREAD -lboost_thread-mt -O3 -o train train.cpp
JEITA_Genpaku_ChaSen_IPAdic.model は電子情報技術産業協会(JEITA)が公開している形態素解析済みコーパスを学習したものです.プロジェクト杉田玄白を茶筌+IPAdicで解析したものを使用しました.
RWCP.model は オリジナルのTinySegmenter からモデルの部分のみを取り出したものです.
学習済みのモデルとコーパスから学習を再開し,性能を向上させることができます.コーパスは学習に使用したものを想定していますが,別のコーパスを使っても動作はするはずです.
$ ./train -t 0.0001 -n 10000 -M model features.txt model_new
makerコマンドで各種言語用のライブラリを作れます.allを指定することで,対応しているすべての言語向けのライブラリを出力します.
$ ./maker javascript< model$ ./maker perl< model$ ./maker ruby< medel$ ./maker python< model$ ./maker cpp< model$ ./maker tex< model$ ./maker vim< model$ ./maker go< model$ ./maker jsx< model$ ./maker csharp< model$ ./maker all< model# 上のライブラリをすべて作成します
<scriptsrc="tinysegmenter.js"></script><script>varsegmenter=newTinySegmenter();// インスタンス生成varsegs=segmenter.segment("私の名前は中野です");// 単語の配列が返るalert(segs.join(" | "));// 表示</script>
もちろん node.js でも使えます.
varTinySegmenter=require('./tinysegmenter.js').TinySegmenter;varsegmenter=newTinySegmenter();// インスタンス生成varsegs=segmenter.segment("私の名前は中野です");// 単語の配列が返るconsole.log(segs);
use utf8;use tinysegmenter;my$str ='私の名前は中野です';my@words = tinysegmenter->segment($str);
require'./tinysegmenter'ts=TinySegmenter.newputsts.segment("私の名前は中野です");
fromtinysegmenterimportTinySegmentersegmenter=TinySegmenter()printsegmenter.segment(u'私の名前は中野です')
#include<iostream>#include<string>#include<vector>#include"tinysegmenter.hpp"usingnamespacestd;intmain() { TinySegmenter segmenter; string s ="私の名前は中野です"; vector<string> v = segmenter.segment(s);for(int i =0; i < v.size(); ++i) { cout << v[i] << endl; }}
\documentclass{jsarticle}\usepackage{tinysegmenter}\begin{document}\TinySegmenter{-}{私の名前は中野です}\end{document}
:echotinysegmenter#segment('私の名前は中野です')
package mainimport ("fmt""tinysegmenter")funcmain() {s:=tinysegmenter.NewSegmenter()segs:=s.Segment("私の名前は中野です")for_,seg:=rangesegs {fmt.Printf("%s\n",seg)}}
import"tinysegmenter.jsx";class_Main{staticfunctionmain(args :string[]) :void{logTinySegmenter.segment("私の名前は中野です");}}
staticvoidMain(string[]args){tinysegmentersegmenter=newtinysegmenter();List<string>segments=segmenter.Segment("私の名前は中野です");for(inti=0;i<segments.Count;i++){Console.WriteLine(segments[i]);}}
using TinySegmentertokenize("私の名前は中野です")
About
No description, website, or topics provided.
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.
Contributors5
Uh oh!
There was an error while loading.Please reload this page.