Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

License

NotificationsYou must be signed in to change notification settings

shogo82148/TinySegmenterMaker

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# 上のライブラリをすべて作成します

JavaScript

<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);

Perl

use utf8;use tinysegmenter;my$str ='私の名前は中野です';my@words = tinysegmenter->segment($str);

Ruby

require'./tinysegmenter'ts=TinySegmenter.newputsts.segment("私の名前は中野です");

Python

fromtinysegmenterimportTinySegmentersegmenter=TinySegmenter()printsegmenter.segment(u'私の名前は中野です')

C++

#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;    }}

TeX

\documentclass{jsarticle}\usepackage{tinysegmenter}\begin{document}\TinySegmenter{-}{私の名前は中野です}\end{document}

Vim script

:echotinysegmenter#segment('私の名前は中野です')

Go

package mainimport ("fmt""tinysegmenter")funcmain() {s:=tinysegmenter.NewSegmenter()segs:=s.Segment("私の名前は中野です")for_,seg:=rangesegs {fmt.Printf("%s\n",seg)}}

JSX

import"tinysegmenter.jsx";class_Main{staticfunctionmain(args :string[]) :void{logTinySegmenter.segment("私の名前は中野です");}}

Csharp

staticvoidMain(string[]args){tinysegmentersegmenter=newtinysegmenter();List<string>segments=segmenter.Segment("私の名前は中野です");for(inti=0;i<segments.Count;i++){Console.WriteLine(segments[i]);}}

Julia

using TinySegmentertokenize("私の名前は中野です")

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors5


[8]ページ先頭

©2009-2025 Movatter.jp