Home > 個人的メモ
< 古い10件 |
個人的メモ Archive (Page 1)
\uXXXX形式のUnicodeエスケープを行なうJavaScriptコード
"精霊会議".replace(/[^\u0000-\u007F]/g,function($0){return "\\u"+("0000"+$0.charCodeAt(0).toString(16).toUpperCase()).slice(-4);});
// -> "\u7CBE\u970A\u4F1A\u8B70"
"\u7CBE\u970A\u4F1A\u8B70"
// -> "精霊会議"
- Category: 個人的メモ
- Tag: JavaScript
Firefoxのプロファイルを作り直した
というか、アプリケーションごと入れ直した。
■ わかったこと
- user.jsのカスタマイズは手をつけないほうが心理的に安心
- Firebugをdisableにするだけで大分違う
- All-in-One GesturesよりもFireGesturesのほうが軽い
- どうやってスムーズに軌跡を描いているのか気になる
- All-in-One Sidebarはなくても困らない
- ブックマークツールバーの左側にアイコンを追加すれば十分
- Tab Mix Plusは入れざるを得なかった
- Session Manager(セッション保存・復元)が便利
- XUL/Migemo(ローマ字検索)も便利
■ 入れた拡張機能
- bbs2chreader
- smorgasbord
- Copy URL +
- Download Statusbar
- Firebug
- FireGestures
- Foxage2ch
- Gmail Notifier
- Greasemonkey
- Minibuffer
- AutoPagirize
- LDRize
- LDR Full Feed
- LDR with Social Bookmark Count Images
- LDR show SBM Comments
- habocovi
- G+?B
- Hatena Diary KeywordPopup
- Irvine Context Menu
- Live HTTP Headers
- Parent Folder
- Session Manager
- Stylish
- Tab Mix Plus
- Web Developer
- XUL/Migemo
■ テーマ
- Opaque
- デフォルトテーマ互換かつアルファチャンネル不使用的なことが書いてあったため
- 軽くなったかどうかは微妙
- デフォルトテーマ嫌いじゃないのでとりあえずこれを採用
- Simple Green
- 噂によると軽いらしい
- 確かに軽くなった気がする
- rein
- 「なー」のひと
- これも軽くなった……ような気がする
- Charamel
- 大人気らしい
- Tab Mix Plusとの併用不可。タブがうまく機能しなくなる
- デザインは良いが、日本語が明朝体なのがちょっと微妙
- 他Netscape互換テーマなどいろいろ
■ user.js
// ロケーションバーの移動ボタンを表示しない
user_pref("browser.urlbar.hideGoButton", true);
// 画像を自動縮小しない
user_pref("browser.enable_automatic_image_resizing", false);
// URIを自動補完しない
user_pref("browser.fixup.alternate.enabled", false);
// 単語の左右のスペースを選択しない
user_pref("layout.word_select.eat_space_to_next_word", false);
// 区切り記号で選択をストップしない
user_pref("layout.word_select.stop_at_punctuation", false);
// インターネット・キーワードを通常のGoogle検索にする
user_pref("keyword.enabled", true);
user_pref("keyword.URL", "http://www.google.co.jp/search?q=");
// ソース表示に外部エディタを使用
user_pref("view_source.editor.external", true);
user_pref("view_source.editor.path", "C:\\WINDOWS\\notepad.exe");
// プラグインをフルパス表示
user_pref("plugin.expose_full_path", true);
// Copy URL +
user_pref("copyurlplus.menus.1.label", "タイトルをコピー");
user_pref("copyurlplus.menus.1.copy", "%TITLE%");
user_pref("copyurlplus.menus.2.label", "URLをコピー");
user_pref("copyurlplus.menus.2.copy", "%URL%");
user_pref("copyurlplus.menus.3.label", "はてなhttp記法");
user_pref("copyurlplus.menus.3.copy", "[%URL%:title=%TITLE%]");
user_pref("copyurlplus.menus.4.label", "はてな引用記法");
user_pref("copyurlplus.menus.4.copy", ">%URL%:title=%TITLE%>%EOL%%SEL%%EOL%<<");
■ userContent.css(Stylishのグローバル・スタイルで代用)
@namespace url(http://www.w3.org/1999/xhtml);
/* target="_blank" のときはカーソルを変える */
a[target="_blank"] {
cursor: alias !important;
}
/* リンク先がpdfのときはアイコンを表示する */
a[href$=".pdf"]:not([href^="/search?"]):after {
content: url("moz-icon://.pdf?size=16");
vertical-align: middle;
}
/* はてなダイアリーの脚注を表示する */
span[class="footnote"] > a[title]:after {
content: "(" attr(title) ")";
}
/*
ルビを表示
from http://www.akatsukinishisu.net/itazuragaki/css/use_ruby_style_as_user_stylesheet.html
*/
ruby {
display: inline-table !important;
text-align: center !important;
white-space: nowrap !important;
text-indent: 0 !important;
margin: 0 !important;
vertical-align: -25% !important;
line-height: 1 !important;
}
ruby > rb, ruby > rbc {
display: table-row-group !important;
line-height: 1.2 !important;
}
ruby > rt, ruby > rbc+rtc {
display: table-header-group !important;
font-size: 60% !important;
line-height: 1.2 !important;
letter-spacing: 0 !important;
}
ruby > rbc+rtc+rtc {
display: table-footer-group !important;
font-size: 60% !important;
line-height: 1 !important;
letter-spacing: 0 !important;
}
rbc > rb, rtc > rt {
display: table-cell !important;
letter-spacing: 0 !important;
}
rp {
display: none !important;
}
■ フィードプレビューを無効に
Firefox2のフィードプレビュー機能を無効にする方法 - mayokara memo
■ 検索エンジン
OpenSearch検索プラグイン(検索プロバイダ)作成ツール
これ使って登録しまくり。
いちいちXML書かなくて良い上にfaviconのdataスキームも自動生成、ワンクリックで登録できる。
あまり使わないだろうけど、超便利。
■ あとは
ブックマークをローカルでタグ管理できるのがあるといいんだけど。
Delicious BookmarksとかGMarksみたいな感じで、mozStorage使うようなやつ。
Enjoy*Studyのひととか作ってくんないかなー、作ってくんないよなー……
探しても見つからないし、需要がないんでしょうね。Firefox3もあるし。
個人的にはローカルのほうが何かと便利で安心なんですけど。
あと、Firefox2ビルトインのブックマークにはプロパティからキーワードを指定できる機能があるみたいなんですけど、これ、管理画面でソートできるだけなんですかね。
「春の祭典」問題
Sony Music Online Japan : AKB48 : インフォメーション
ポスター44枚コンプリートで限定イベントご招待の話。
中止になったみたいです。
これを見て、正攻法で全種類揃えるのに必要なCDの枚数の期待値はいくらくらいなのだろう。
これって、来年の入試になりませんか?
……とか思って計算してみようかと思ったのだけど、既にネットに答えがあった。
お菓子のおまけが全部揃うまでは?
44種類だと・・・
およそ192.3999393064804個買わなくてはいけない。
通常版で\1,250だから\240,500くらいか。
まあ、現実的にはオークション経由で交換されたりで、こんな非効率的なことにはならないでしょうけど。
ついでに、いろいろ汎用性の高そうな4種類の場合をみてみると、8.333333333333332個とのこと。
救世主のひとの回答が素晴らしいな。
SKKIMEインストールメモ
なんとなく、使い始めました。
例によってあまり解説が見当たらなかったので、ざっくりとメモしておこうかと。
■ SKKIMEとは?
日本語入力システムSKKのWindows版。
Windows IMEとしてMS-IMEやATOKみたいな感じで使える。
■ SKKとは?
変換方法が特殊で、ちょっとクセの強い日本語入力システム。
SHIFTやCTRLを多用する。
詳しくはWikipedia参照……
■ SKKIMEのインストール
ここから本体をダウンロードする。
私の場合は「SKKIME for Windows2000」「ver. 1.5」「WindowsXP msvcr80」の最新版をダウンロード。
ダウンロードが終わったら、適当なところに解凍。
INFファイルを右クリックしてインストールする。
■ 辞書のダウンロード
そのままでは辞書がないのでまともに使えない。
辞書をダウンロードする。
ここから「SKK-JISYO.L」をダウンロード。
annotation をサポートしない SKK プログラム (例えば、skkinput や SKKIME など) で SKK-JISYO.L を利用したいときは、annotation を取り除いた SKK-JISYO.L.unannotated.gzをご利用下さい。
とあるが、最近のSKKIMEはannotationに対応しているので気にせず普通のを使えば良い。
余裕があれば「jinmei」「geo」「station」「propernoun」あたりもダウンロードする。
SKKIMEを置いたディレクトリに「dic」ディレクトリなどを用意してまとめておく。
■ SKKIMEへの切り替えと辞書登録
ここからはWindowsXPを想定して説明。
「コントロールパネル」→「地域と言語のオプション」→「言語タブ」→「テキスト サービスと入力言語」→「詳細」を選ぶ。
「既定の言語」で「日本語 - SKKIME ver. 1.x」を選ぶ。
「インストールされているサービス」から「SKKIME」のプロパティを開く。
「辞書設定タブ」の「検索辞書」からダウンロードした辞書を追加。
前項で説明したものは全てソートされているので「ソートされている」にチェック。
全て登録したら、学習機能を有効にするために「ユーザ辞書」「ユーザ辞書(自動送り)」を一番上に移動。
上から順に検索されるので、「L辞書」→「その他」な感じで適当に並べかえておく。
■ 入力テスト
ここの「AquaSKK で日本語入力」を参照……
■ init.elを入れる
「2007/11/20」の項からinit.elをダウンロードし、「C:\Documents and Settings\{$USERNAME}\Application Data\skk\skki1_5\」に置く。
■ 今日の日付を出してみる
「@」を押したあと、何度かSPACEを押してみる。
「平成20年2月24日(日)」
こんな感じで今日の日付が出ればOK。
■ いろいろ出してみる
「z-」で「~」。
「zh」「zj」「zk」「zl」で「←」「↓」「↑」「→」。
「z,」「z.」「z/」で「‥」「…」「・」。
■ 主なキー操作
| CTRL+\ | IMEオンオフ |
| CTRL+j | 確定 |
| CTRL+g | 取り消し |
| SPACE | 変換・次候補 |
| x | 前候補 |
| q | 無変換(トグル変換) |
| / | 半角英数一時入力(SKK abbrevモード) |
| q | 「かな」←→「カナ」切り替え |
| l | 「かな」「カナ」→「半角英数」切り替え |
| L(SHIFT+l) | 「かな」「カナ」→「全角英数」切り替え |
| CTRL+j | 「半角英数」「全角英数」→「かな」切り替え |
ENTERはそのまま入力される。
詳しくはDDSKKのユーザーマニュアル参照……
■ (発展)はてなダイアリーキーワード辞書を作る
□ Ruby環境を用意する
略。
□ skktoolsを用意する
ここからWindows用バイナリがダウンロードできる。
□ ふりがなリストをダウンロードして変換する
「はてなダイアリーキーワードふりがなリスト」をSKKの辞書に変換 - znzの日記 - Rubyist
ここの記述を参考にダウンロード→変換。
私の場合はちょっと手を加えて「」で囲まれた語句を無視するようにした。
こんな感じ。文字コードはEUCにする。
ARGF.each do |line|
line.chomp!
furigana, keyword = line.split(/\t/, 2)
if furigana == keyword
next # ひらがなだけのキーワードを無視
end
if furigana == NKF.nkf('-Ee -m0 --hiragana', keyword)
next # カタカナ語は無視
end
if /^「.*」$/ =~ keyword
next # 「」語は無視
end
puts "#{furigana} /#{keyword.gsub(/&/, '&').concatify}/"
end
コメントを参考に変換して前述の手順で登録して完了。
■ Tips
□ Enterで確定のみの動作にする
「SKKIME」のプロパティから「キー設定タブ」→「Enterで確定のみの動作にする」にチェック。
■ 「SKKIME」のアンインストール
「テキスト サービスと入力言語」で「SKKIME」を既定から外し削除、再起動した後
- 「SKKIME」を置いたディレクトリ
- 「C:\Documents and Settings\{$USERNAME}\Application Data\skk\skki1_x」
- 「C:\WINDOWS\ime\SKKIM1x」
- レジストリ「HKCU\Software\TT\Windows\CurrentVersion\SKKIME\1.x」
- レジストリ「HKLM\Software\TT\skeime\1.x」
- レジストリ「HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0110411」
を削除する。
■ 適当な感じですが
参考になれば。
いろんなサービスの最初のエントリを調べた
■ はてなダイアリーキーワード
このはてなダイアリーの存在意義のひとつと言っても過言ではない素晴らしい機能。
■ はてなダイアリーキーワード 編集履歴
中島みゆき@20030208150549 - はてなダイアリー
編集時刻:2003/02/08 15:05:49
編集者:jkondo
編集内容:append
■ はてなブックマーク
はてなブックマーク - はてなダイアリー日記 - キーワード自動リンクの不具合について
http://d.hatena.ne.jp/hatenadiary/20050208/1107829663
2月3日ごろより、新規に作成されたキーワードで自動リンクされないという不具合をユーザー様からご指摘いただいていましたが、サーバー設定の不具合により、キーワードの抽出に失敗する不具合があったことが本日判明しました。 早速、先ほどサーバーの設定の変更作業を行い、この不具合を解消いたしました。ご指摘いただきました皆様、ご指摘ありがとうございました。...
■ 教えて!goo / OKWave
WindowsでのFAT16ファイルシステムとFAT32ファイルシステムの違いは何でしょう。
質問投稿日時:99/07/29 17:20
■ CinemaScape
1956年、アメリカで実際に起こったクイズ番組のスキャンダルを題材にした話である。 視聴者参加の人気番組に数週間チャンピオンを続けるユダヤ人の男がいた。彼は番組のプロデューサーにより事前に問題と答えを教えられていた。ところが、スポンサーの意向により番組人気の確保の為に新しいチャンピオンを作り出そうとする。チャンピオンは新しいチャンピオンの為に誤答をし降りる事に・・・。しかし、納得いかずTV局の番組関係者を訴える事にした。のちに事態は下院の立法特別管理委員会へと・・・。
■ ErogameScape
ErogameScape-エロゲー批評空間- アージュマニアックス ~伊隅四姉妹最期の日~
発売日 2000-06-23
■ しょぼいカレンダー
放送期間 2003-1~2003-3
■ 2ちゃんねる
つくりたい掲示板のジャンル募集!(WebArchive)
1 名前: ひろゆき 投稿日: 1999/05/30(日) 12:25
つくりたいジャンルがあったら書いて下さい。
暇なんでほいほい作ります。ホントは暇じゃないかも。。。
■ ニコニコ動画
動画 sm1 は再生できません。現在アクセスできないか、削除された可能性があります。
■ まとめ
あんまり見つからなかった……
「ZIPでくれ!」と同じことをwgetでやる
任意のURLに埋め込まれた画像およびリンク先の画像をまとめてzipで返すサービス。
良い機会なのでwgetとzipで同じことをやる手順をメモ。
■ 方法
wget -r -l 1 -t 3 -w 1 -H -A jpg,jpeg,png,gif,bmp -nd -P zipde http://www.example.com/path/
zip zipde.zip zipde/*.{jpg,jpeg,png,gif,bmp}
rm -rf zipde
JavaScriptで簡易形態素解析 その2
JavaScriptで簡易形態素解析 - mayokara lab
JavaScriptで簡易形態素解析 - mayokara memo
さらに改造。
■ コード
/*
ipadic Licence
---
Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
and Technology. All Rights Reserved.
Use, reproduction, and distribution of this software is permitted.
Any copy of this software, whether in its original form or modified,
must include both the above copyright notice and the following
paragraphs.
Nara Institute of Science and Technology (NAIST),
the copyright holders, disclaims all warranties with regard to this
software, including all implied warranties of merchantability and
fitness, in no event shall NAIST be liable for
any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether in an
action of contract, negligence or other tortuous action, arising out
of or in connection with the use or performance of this software.
A large portion of the dictionary entries
originate from ICOT Free Software. The following conditions for ICOT
Free Software applies to the current dictionary as well.
Each User may also freely distribute the Program, whether in its
original form or modified, to any third party or parties, PROVIDED
that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
on, or be attached to, the Program, which is distributed substantially
in the same form as set out herein and that such intended
distribution, if actually made, will neither violate or otherwise
contravene any of the laws and regulations of the countries having
jurisdiction over the User or the intended distribution itself.
NO WARRANTY
The program was produced on an experimental basis in the course of the
research and development conducted during the project and is provided
to users as so produced on an experimental basis. Accordingly, the
program is provided without any warranty whatsoever, whether express,
implied, statutory or otherwise. The term "warranty" used herein
includes, but is not limited to, any warranty of the quality,
performance, merchantability and fitness for a particular purpose of
the program and the nonexistence of any infringement or violation of
any right of any third party.
Each user of the program will agree and understand, and be deemed to
have agreed and understood, that there is no warranty whatsoever for
the program and, accordingly, the entire risk arising from or
otherwise connected with the program is assumed by the user.
Therefore, neither ICOT, the copyright holder, or any other
organization that participated in or was otherwise related to the
development of the program and their respective officials, directors,
officers and other employees shall be held liable for any and all
damages, including, without limitation, general, special, incidental
and consequential damages, arising out of or otherwise in connection
with the use or inability to use the program or any product, material
or result produced or otherwise obtained by using the program,
regardless of whether they have been advised of, or otherwise had
knowledge of, the possibility of such damages at any time during the
project or thereafter. Each user will be deemed to have agreed to the
foregoing by his or her commencement of use of the program. The term
"use" as used herein includes, but is not limited to, the use,
modification, copying and distribution of the program and the
production of secondary products from the program.
In the case where the program, whether in its original form or
modified, was distributed or delivered to or received by a user from
any person, organization or entity other than ICOT, unless it makes or
grants independently of ICOT any specific warranty to the user in
writing, such person, organization or entity, will also be exempted
from and not be held liable to the user for any such damages as noted
above as far as the program is concerned.
・
*/
var parse = function(str){
var re = {
kanji: "[一-龠々〆ヵヶ]",
hiragana: "[ぁ-ん]",
katakana: "[ァ-ヴ]",
hankakukana: "([ヲ-ン][゙゚]?)",
prolong: "[ー~]",
alphanumeric: "[0-9A-Za-z\\-_,.]",
alphanumeric2: "[0-9A-Za-z,.]",
punctuation: "[,.、。]",
ellipsis: "[・…―]",
interrobang: "[!?!?]",
bracket: "[()\\[\\]{}<>()[]{}‘’“”〈〉《》「」『』【】〔〕<>]",
space: "[ ]",
end_of_sentence: "[,.、。・…―!?!?)」』]",
conjunction: "(にもかかわらず|だからといって|おしむらくは|おそれながら|惜しむらくは|しかしながら|それにしても|それどころか|さもなければ|つまるところ|でなければ|そのうえで|恐れながら|だけれども|そうすると|だからこそ|そうしたら|それなのに|それだけに|だとすると|したがって|というのも|そうですが|なかんづく|そのうえに|然しながら|それでいて|そうなると|そやさかい|なかんずく|そういえば|ですけれど|ともすれば|だとすれば|ですから|そういや|はんめん|それでも|そもそも|おなじく|いっぽう|それとも|さりとて|若しくは|こうして|ましてや|ならびに|なぜなら|ちなみに|あわせて|と同時に|そしたら|ところが|でないと|たとへば|ほんじゃ|ふんじゃ|おまけに|もっとも|ないしは|それでは|ついては|それなら|あるいは|どころか|もしくは|てゆーか|ほんなら|そのうえ|たとえば|けれども|然し乍ら|それから|とすれば|ところで|わけても|そうして|ぎゃくに|すなわち|かくして|ともあれ|そーいや|因みに|よって|じゃあ|されど|それに|並びに|譬えば|すると|併せて|しかし|そこで|従って|ともに|同じく|それも|そして|だけど|だって|まずは|しかも|ないし|ほなら|じゃが|さらに|それと|ついで|例へば|けれど|ほんで|追って|なので|譬へば|ならば|本当は|および|つまり|或いは|だから|または|そりゃ|ゆえに|それで|ですが|んじゃ|次いで|ただし|したら|なのに|例えば|かたや|及び|然し|ほな|さて|但し|ただ|実は|では|だが|でも|反面|かつ|また|一方|いえ|又は|じゃ|いや|逆に|乃至|けど|即ち|次に|或は|故に|尤も|なお|なら|尚|又|但|が|で|亦|否|即)",
particle: "(にわたりまして|にたいしまして|にあたりまして|に当たりまして|をめぐりまして|にまつわります|に関しまして|としましたら|を通じまして|にかけまして|とかいいます|にとりまして|によりまして|をめぐります|にたいします|に対しまして|を通しまして|に従いまして|にあたります|におきまして|に際しまして|をもちまして|につきまして|にわたります|に当たります|といいます|に対します|にまつわる|をめぐって|にあたって|にわたって|にたいして|に関します|にたいする|としまして|によります|に従います|に当たって|につれて|において|とかいう|にわたり|に対して|に当たる|どころか|について|とかいふ|やいなや|をもって|にかけて|に関する|における|といった|にあたる|からには|っていう|にあたり|っちゅう|に当たり|に従って|をめぐる|を通して|に関して|にわたる|を通じて|によって|ばっかり|に対する|にとって|に際して|とともに|けれども|として|に従い|に対し|に関し|を以て|につけ|を通じ|ていう|にかけ|なんぞ|ぐらい|ばかし|につれ|により|けども|にとり|ながら|に際し|と共に|による|といふ|および|という|ばかり|じゃあ|ちゃあ|なんか|につき|じゃァ|くらい|だって|けれど|に従う|ものの|っきゃ|さかい|なんて|ばっか|から|しか|すら|さえ|こそ|じゃ|なり|しも|のみ|ほど|だけ|にて|ちゃ|とも|のに|けど|でも|かも|つつ|ども|なぞ|やら|だに|んで|より|ので|ずつ|だり|だの|とか|たり|まで|など|っと|[こそあど]?の|程|と|に|や|が|で|て|も|ぞ|は|へ|ヲ|ヘ|迄|ノ|か|之|を|デ)",
post_particle: "(かしら|なぁー|だって|かぁ|もん|わい|ねエ|やら|なァ|なあ|なー|ねぇ|よー|ねェ|よう|ねえ|っけ|ヨー|てん|なぁ|ねッ|ねん|のう|かい|ねー|ヨ|ぜ|ナ|け|な|で|わ|の|さ|ん|ね|ワ|ぞ|べ|ネ|や|よ)"
};
re.verb = re.kanji + re.hiragana + "[るれろよ]?";
re.adjective = re.kanji + "し?(かろ|かっ|く|う|い|けれ)";
var re_particle = new RegExp("((" + re.adjective + "|"
+ re.conjunction + "|"
+ re.particle + "(?!" + re.particle + ")|"
+ re.post_particle + "(?=" + re.end_of_sentence + "))|\\s+)", "g");
var re_particle2 = new RegExp("^(" + re.adjective + "|"
+ re.conjunction + "|"
+ re.particle + "|"
+ re.post_particle + ")$", "g");
var re_word = new RegExp("(" + re.verb + "|"
+ re.kanji + "+|"
+ "(" + re.hiragana + "|" + re.prolong + ")+|"
+ "(" + re.katakana + "|" + re.prolong + ")+|"
+ re.hankakukana + "+|"
+ re.prolong + "+|"
+ re.alphanumeric + "+|"
+ re.alphanumeric2 + "+|"
+ re.punctuation + "+|"
+ re.ellipsis + "+|"
+ re.interrobang + "+|"
+ re.bracket + "|"
+ re.space + "+)", "g");
var result = [];
var array = str.replace(re_particle, "<<>>$2<<>>").split("<<>>");
var i = 0, ilength = array.length, token = null;
var j = 0, jlength = 0;
for (i=0; i<ilength; i++) {
if (array[i] == "") {
continue;
}
if (re_particle2.test(array[i])) {
result.push(array[i]);
continue;
}
token = array[i].replace(re_word, "<<>>$1<<>>").split("<<>>");
jlength = token.length;
for (j=0; j<jlength; j++) {
if (token[j] == "") {
continue;
}
result.push(token[j]);
}
}
return result;
};
■ 変更点
- 正規表現をばらした
- 半角カナ群を追加
- 文字の分類の見直し
- 半角スペースはMeCabに合わせて省くようにした
- 未知の文字列をそのまま返すようにした(前のはマッチしたもののみを返していた)
- 形容詞らしき部分の切り出しを行うようにした
- 接続詞と助詞で区切るようにした(辞書使用)
- 連続する助詞(終助詞除く)は最後のみ、終助詞は文の終わりのみにマッチするようにした
■ 辞書について
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
接続詞、助詞、括弧の語彙はMeCab用のIPA辞書から拝借しました。
ただし、いくつかの短い助詞は影響が大きいので省き、さらに前回と同じく「[こそあど]の」を追加してあります。
ライセンスについては
ipadicのライセンスの件 - mir the tritonn
ということらしいので、念のためCOPYINGの内容をコメントで付加。
これでいいのかな。
■ 比較ページ
MECAPIとの比較ページを作りました。
MECAPIのcallback関数の指定が効かないようなので、別ページです。
文章が長すぎるとMECAPIの結果が返ってきません。
■ おことわり
仕組み上、ひらがな列・カタカナ列・漢字列が連なるとしょーもない結果になります。
■ テスト
順にJSもどき版、MeCab(IPA辞書)。
- 「吾輩は猫である。名前はまだ無い。」
- 「吾輩|は|猫|で|ある|。|名前|は|まだ|無い|。」
- 「吾輩|は|猫|で|ある|。|名前|は|まだ|無い|。」
- 「私は、その男の写真を三葉、見たことがある。」
- 「私|は|、|その|男|の|写真|を|三葉|、|見た|こと|が|ある|。」
- 「私|は|、|その|男|の|写真|を|三|葉|、|見|た|こと|が|ある|。」
- 「私の執事をやらないか?」
- 「私|の|執事|を|やら|ない|か|?」
- 「私|の|執事|を|やら|ない|か|?」
- 「サンタクロースをいつまで信じていたかなんてことはたわいもない世間話にもならないくらいのどうでもいいような話だが、それでも俺がいつまでサンタなどという想像上の赤服じーさんを信じていたかと言うとこれは確信を持って言えるが最初から信じてなどいなかった。」
- 「サンタクロース|を|いつ|まで|信じ|て|いたか|なんて|こと|は|たわい|も|ない|世間話|に|も|なら|ないくらい|の|どう|でも|いいような|話|だが|、|それでも|俺|が|いつ|まで|サンタ|など|という|想像上|の|赤服|じーさん|を|信じ|て|いたか|と|言う|と|これ|は|確信|を|持っ|て|言える|が|最初|から|信じ|て|など|いな|か|った|。」
- 「サンタクロース|を|いつ|まで|信じ|て|い|た|か|なんて|こと|は|たわい|も|ない|世間|話|に|も|なら|ない|くらい|の|どう|でも|いい|よう|な|話|だ|が|、|それでも|俺|が|いつ|まで|サンタ|など|という|想像|上|の|赤|服|じ|ーさんを|信じ|て|い|た|か|と|言う|と|これ|は|確信|を|持っ|て|言える|が|最初|から|信じ|て|など|い|なかっ|た|。」
- Category: 個人的メモ
- Tag: JavaScript
JavaScriptで簡易形態素解析
JavaScriptで簡易形態素解析 - mayokara lab
ちょっと改造してみた。
■ コード
var parse = function(str){
if (typeof(str) != "string") {
return;
}
var re = /([一-龠][ぁ-ん]|[一-龠々〆ヵヶ]+|[ぁ-んー~]+|[ァ-ヴー~]+|[0-9A-Za-z]+|[0-9A-Za-z]+|[,.,.、。・…!?!?]+|[()()「」『』【】“”]|[ ]+)/g;
var re_particle = /((について|ならば|までを|までの|くらい|なのか|として|とは|なら|から|まで|して|だけ|より|ほど|など|では|は|で|を|[こそあど]?の|が|に|へ|と|て|も)*)(について|ならば|までを|までの|くらい|なのか|として|とは|なら|から|まで|して|だけ|より|ほど|など|では|は|で|を|[こそあど]?の|が|に|へ|と|て|も)/g;
var array = str.replace(re_particle, "$1<<>>$3<<>>").split("<<>>");
var result = [];
var i = 0, ilength = array.length, token = null;
var j = 0, jlength = 0;
for (i=0; i<ilength; i++) {
token = array[i].match(re);
if (token) {
jlength = token.length;
for (j=0; j<jlength; j++) {
result.push(token[j]);
}
}
}
return result;
};
■ 変更点
- 「漢字1字+ひらがな1字」のパターンを追加
- 「話だ」のようなミスも増えるけど、「増え|る」のように語幹が切り出せるのは大きいと判断。
- ひらがな・カタカナ群に「ー」と「~」を追加
- 句読点の種類を追加
- 「・」「…」を追加
- 括弧の種類を追加
- 括弧を連続指定から除外
- 「、|『」のように分割させるため。
- 助詞「でなければ」を削除
- 助詞「って」を削除
- 「笑っ|て」のように分割させるため。
- 助詞「も」を追加
- 「[こそあど]の」を追加
- 「こ|の」のように分割されることを防ぐため。
- 助詞の前でも区切るようにした
- 助詞扱いの単語が2つ以上並ぶときは最後だけ助詞扱いする(「ボキャブラリ解析」より拝借)
■ テスト
順にオリジナル版、改造版、MeCab(IPA辞書)。
- 「吾輩は猫である。名前はまだ無い。」
- 「吾輩|は|猫|で|ある|。|名前|は|まだ|無|い|。」
- 「吾輩|は|猫|で|ある|。|名前|は|まだ|無い|。」
- 「吾輩|は|猫|で|ある|。|名前|は|まだ|無い|。」
- 「私は、その男の写真を三葉、見たことがある。」
- 「私|は|、|その|男|の|写真|を|三葉|、|見|たこと|が|ある|。」
- 「私|は|、|その|男|の|写真|を|三葉|、|見た|こと|が|ある|。」
- 「私|は|、|その|男|の|写真|を|三|葉|、|見|た|こと|が|ある|。」
- 「私の執事をやらないか?」
- 「私|の|執事|を|やら|ないか|?」
- 「私|の|執事|を|やらないか|?」
- 「私|の|執事|を|やら|ない|か|?」
- 「サンタクロースをいつまで信じていたかなんてことはたわいもない世間話にもならないくらいのどうでもいいような話だが、それでも俺がいつまでサンタなどという想像上の赤服じーさんを信じていたかと言うとこれは確信を持って言えるが最初から信じてなどいなかった。」
- 「サンタクロース|を|いつまで|信|じて|いたか|なんて|こと|は|たわいも|ない|世間話|に|も|ならないくらい|の|どうでも|いいような|話|だが|、|それでも|俺|が|いつまで|サンタ|など|と|いう|想像上|の|赤服|じ|ー|さんを|信|じて|いたか|と|言|うと|これは|確信|を|持|って|言|えるが|最初|から|信|じて|など|いなか|った|。」
- 「サンタクロース|を|いつ|まで|信じ|て|いたかなん|て|こと|は|たわい|も|ない|世間話|にも|なら|ないくらい|の|どうで|も|いいような|話だ|が|、|それで|も|俺|が|いつ|まで|サンタ|など|と|いう|想像上|の|赤服|じーさん|を|信じ|て|いたか|と|言う|と|これ|は|確信|を|持っ|て|言え|る|が|最初|から|信じ|て|など|いなかった|。」
- 「サンタクロース|を|いつ|まで|信じ|て|い|た|か|なんて|こと|は|たわい|も|ない|世間|話|に|も|なら|ない|くらい|の|どう|でも|いい|よう|な|話|だ|が|、|それでも|俺|が|いつ|まで|サンタ|など|という|想像|上|の|赤|服|じ|ーさんを|信じ|て|い|た|か|と|言う|と|これ|は|確信|を|持っ|て|言える|が|最初|から|信じ|て|など|い|なかっ|た|。」
■ 追記
JSで簡易形態素解析 その2 - mayokara memo
改良版を作りました。
このエントリで示したコードは未定義語(「&」や「+」、半角カナなど)をスキップしてしまう問題があるので、改良版のほうが大分オススメです。
このエントリに示したコードをご利用の際はご注意ください。
- Category: 個人的メモ
- Tag: JavaScript
今北産業 - 任意のページを三行でまとめるブックマークレット
見ているページを三行で要約します。
精度には期待しないでください(笑
■ 仕組み
本文が含まれていそうな要素から原文を抜き出し、JSによる簡易形態素解析の後、3階のマルコフ連鎖で三行の文章を生成しています。
■ Thanks
日本語プログラミング言語「なでしこ」公式マニュアル 助詞・単位のリスト
■ 余談
>>> [] ? 1 : 0
1
うーむ……
< 古い10件 |
Home > 個人的メモ
- Feeds
- Search This Blog
- Counter
-
-
since 2008.01.11
-