サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/ikawaha
$ qiita-zenn -user ikawaha -verbose https://qiita.com/api/v2/users/ikawaha/items?page=1 Goa v3 のテストをシュッとする 人生で何度目かのダブル配列TRIEを書いた 形態素解析器 kagome のユーザー辞書の使い方 goa でデザイン・ファーストをシュッとする golang で string のポインタを取得する Luceneで使われてるFSTを実装してみた(正規表現マッチ:VMアプローチへの招待) メモ:golang で []byte と string の読み込みを透過的に扱う試行錯誤 Elasticsearch CheatSheet Pure Go な形態素解析器で実行バイナリに辞書埋め込んだヤツを作ってみた(3) 完結編 json を pretty print するのに echo '{"ap
概要 人は人生に何度かTRIEを書くという.そんなわけで,何度目かのTRIEでsudachiのdarts-cloneをクローンしてみました.TRIEの記事は沢山あるので,ここではGoに移植してみて気づいた事をいくつか共有していきたいと思います. 今回の成果物: https://github.com/ikawaha/dartsclone darts-clone 元ネタはこちら.Java版とPython版があります. https://github.com/WorksApplications/Sudachi/tree/develop/src/main/java/com/worksap/nlp/dartsclone https://github.com/WorksApplications/SudachiPy/tree/develop/sudachipy/dartsclone 本家は https:/
この記事は Go アドベントカレンダー 12/19 の記事です. kagome の Dic にもう少し自由なインタフェース(DataStoreから辞書登録など)があれば embed コードでじゃない形で使えるのかなーと、昔考えた事がありました。 — mattn (@mattn_jp) 2017年12月13日 たぶん誰も使ってないと思いますが, kagome にはユーザー辞書があります.形式は kuromoji のユーザー辞書と同じです.なので,「関西国際空港」を登録して search モードで「関西/国際/空港」という風に分割することが出来ます. といってもあんまり伝わらないだろうな,と思って特に説明を書いてなかったのですが,いい機会なのでもし誰かのお役に立てばと思い,kagome のユーザー辞書について少し説明したいと思います. TL;DR ユーザー辞書に登録された語彙は最優先で使われま
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに この記事は Go(その3) Advent Calendar の19日目の記事です。 goa.design(以下 goa)の紹介をしたいと思います。 goa は APIデザインを書くと、そこから API サーバのモックとかクライアントとかドキュメントとか一通り生成してくれるマイクロサービス用のフレームワークのことです。 goa は APIデザインを書いて → レビュー → 実装 → デザイン見直し → ・・・ とサイクルを回して開発するプロセスをとれるようにできています。まずは API デザインを書くことで見通しよく進めよう、と
概要 elasticsearchはデフォルトでmulticastがONになっているので,気がつくと知らないノードとクラスタ組んでいるときがある.インストールしたら, クラスタ名を変える multicastをやめる のどっちか(もしくは両方)ぐらいはしておいた方がいい. 経緯 icu の filter プラグインを入れたのですが,どうも上手く認識されなくてさんざん悩んだあげく,次のようなアドバイスをもらいました. @ikawaha クラスタ名を変更したほうがいいですよ。デフォルトで起動すると、同じネットワークで立ち上げてる人がいると、クラスタ組んじゃうから。 — Jun Ohtani (@johtani) 2014, 8月 8 !たしかに知らないうちにノードが増えてる! 入れたプラグインが動かない原因はこう. 知らないうちに知らないノードとクラスタ組んでる 知らないノードには僕が入れたプラグ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
入力と出力のペアに対して,上のようなグラフを作るのが目標です.テーブルの出力のとこは数字が書いてありますが,文字列だと思ってとらえて下さい.map だと出力は1つに限られちゃいますが,ひとつの入力に対して出力が複数あってもいいです.たとえば入力 "feb" に対して,出力は "28" と "29" があります.(2月は28日と29日のときがありますね). ノードの部分が状態で,そこから出ている矢印が状態遷移になります.矢印には a/b というラベルがついていますが,a の部分が入力とのマッチを意味し,b の部分がそのときの出力を意味します. 上の例で示すFSTで,"aug"を処理するには,"aug"を頭から読んで,入力"a"に対応するの(9)から(3)への矢印を選択します.そのとき,出力として"3"を記録しておきます.そのあと,"u"に対して(3)から(2)への矢印を選択し,"1"を先ほど
// ペナルティの計算 // searchModeKanjiLength は 2, searchModeKanjiPenalty は 1700 です. func additionalCost(n *node) int { l := utf8.RuneCountInString(n.surface) if l > searchModeKanjiLength && kanjiOnly(n.surface) { return (l - searchModeKanjiLength) * searchModeKanjiPenalty } if l > searchModeOtherLength { return (l - searchModeOtherLength) * searchModeOtherPenalty } return 0 } func (la *lattice) forward(mo
追記 リファクタリングに gofmt だけでなく gorename も使えるようになりました.単なる文字列の置き換えではうまくいかない場合は gorename を使おう! @mattnさんの記事 golang のリファクタリングには gofmt ではなく、gorename を使おう。 概要 golang のリファクタリングは面倒と思いませんか?たとえば,public なメソッドを private にしようと思ったら,該当メソッドの頭文字を大文字から小文字に変更しなきゃいけなくて,いっぱい編集箇所があって泣けるとかありませんか? なんでこんなに面倒なんだ!と思っていましたが,さすが golang.すでにリファクタリング用のツールが用意されていました.それも,普段よく使う gofmt がそれでした. gofmt をリファクタリングに使う 出典:https://golang.org/cmd/go
概要 Elasticsearch の char_filter のひとつ,icu_normalizer の使い方メモです. オプションの設定方法がよく分からなかったので調べてみました. icu plugin は char_filter 以外にもいろいろ利用可能ですが,ここで扱うのは char_filter だけです. こんなかんじ icu_normalizer を使うと,「㌶」→「ヘクタール」など,いい感じに変換してくれます. ※ 下の画面は,「Å」→「å 」「㌢」→「セ」「ン」「チ」,「①」→「1」,「⑵」→「(」「2」「)」,「Ⅲ」→「i」「i」「i」となっている例です. インストール github: https://github.com/elasticsearch/elasticsearch-analysis-icu バージョンごとにブランチが切られているので,それぞれのブランチの R
qiita.com
概要 辞書データとかちょっとした画像ファイルとか,リソースを定数としてバイナリに持たせておきたいときってありますよね.たとえば,Java なら jar の中にちょっとしたリソースファイルとか含められるじゃないですか.go-bindata はそういった問題を解決するためのツールです.自分用に使い方をまとめたメモなので,違うよ!ってところがあったらご指摘いただけると嬉しいです 出典 下記の README に丁寧に書いてあるので,こちらを読むのが間違いないです. go-bindata 仕組み go-bindata は(バイナリ)データをプログラムに埋め込むためのツールです. データをコードとして埋め込んで,それらにアクセスできるようなメソッドをつけた go のソースを生成してくれます. データは gzip 圧縮してくれます (しないことも可能です) 生成されたコードを加えてビルドすると,ビルドが
概要 Go にはプロファイリングツールがついているのだけど,何を出力してくれているのかよく分からなかったのでメモ.間違いに気づかれた方いらっしゃったらコメントいただければ幸いです . 出典 Russ Cox さんが下記に書いてくれてました.これを読むのが間違いないです. Russ Cox, Profiling Go Programs CPU Profiling プロファイリング用のコードの埋め込み まず, runtime/pprof を import しておきます.(net/http/pprofというのもあります). CPU Profiling は計測したい実行コードの前でStartCPUProfile()を呼んで,計測終了のタイミングでpprof.StopCPUProfile()を呼びます.終了の方は defer に登録しておけば関数抜けるときに自動で呼ばれるので便利ですが,Ctr-Cと
はじめに DoubleArray を作ったこともあって,ついでに形態素解析器も作ってみようと思い立ち kuromoji を参考に形態素解析器を実装してみました.目標としては,Pure Go で kuromoji みたいな感じ(辞書内包,検索モードあり,スレッドセーフ)を目指します. サンプルプログラム 参考 下記を参考にさせていただきました. kuromoji 日本語入力を支える技術 Mecab 品詞IDの定義 形態素解析のちょー適当な説明 「形態素」が何であるかを議論し出すと面倒なことに巻き込まれそうなので,ここでは MeCab-IPADIC で定義されているものとします.形態素解析のアルゴリズムについては下記の資料などをあたってください. 日本語入力を支える技術 日本語解析ツール MeCab, CaboCha の紹介 用意するもの DoubleArray #前に作ったものを id が記
概要 ファイルを読み込んで処理することがよくあるので忘備用のメモです. ファイルを1行ずつ読み込む bufio.Readerで読み込む ReadString 引数にファイルが指定されていれば,ファイルをオープンして1行ずつ読み込みます. 引数が指定されていなければ,標準入力から1行ずつ読み込みます. 追記:ReadString('\n')で読み込むとWindowsの場合\rが残ってしまうのでReadLineの方がいいとのコメントいただきましたので,ReadLine使った版も載せておきました. os.EOFでなくてio.EOFなのがはまりどころでした. Readerはファイルをクローズすれば閉じられるみたいです. package main import ( "bufio" "fmt" "io" "os" ) func main() { var fp *os.File var err erro
% go run plotinum_sample.go ../lib/go/src/code.google.com/p/plotinum/vg/vgpdf/vgpdf.go:10:2: cannot find package "bitbucket.org/zombiezen/gopdf/pdf" in any of: /opt/local/go/src/pkg/bitbucket.org/zombiezen/gopdf/pdf (from $GOROOT) /Users/ikuo.kawaharada/lib/go/src/bitbucket.org/zombiezen/gopdf/pdf (from $GOPATH) ../lib/go/src/code.google.com/p/plotinum/vg/vgimg/vgimg.go:12:2: cannot find package "
このページを最初にブックマークしてみませんか?
『@ikawahaのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く