macOS 10.14であらたに搭載されたNaturalLanguage.frameworkにアクセスして、自然言語テキストが「何語」かを推定し、指定数の言語ごとにその推測した確率を求めるAppleScriptです。
NLLanguageRecognizerで、言語推定時に「言語Aと言語Bのみ考慮してね」と指定し、それぞれに数値による重み付け(0.0〜1.0)を指定できます。
ただ、重み付けを指定してもダメな時はダメなようで……日本語の文章に多めにアルファベットが入っている場合にはまったく日本語と判定されません。
AppleScript名:NLLanguageRecognizerで自然言語の推定 v4 |
— Created 2018-11-13 by Takaaki Naganoya use AppleScript version "2.7" — Mojave (10.14) or later use framework "Foundation" use framework "NaturalLanguage" use scripting additions property NLLanguageEnglish : a reference to current application’s NLLanguageEnglish property NSMutableDictionary : a reference to current application’s NSMutableDictionary property NLLanguageJapanese : a reference to current application’s NLLanguageJapanese property NLLanguageRecognizer : a reference to current application’s NLLanguageRecognizer set aNL to NLLanguageRecognizer’s alloc()’s init() –言語ごとに可能性の重み付けを行って、言語推定 –言語推定の可能性ヒントデータを指定。日本語が99.9%、英語は0.1%の可能性として指定 set hintDict to NSMutableDictionary’s dictionaryWithObjects:{1.0E-3, 0.999} forKeys:{NLLanguageEnglish, NLLanguageJapanese} –> (*(NSDictionary) {en:0.01, ja:0.99}*) –recordで作ってScriptingBridge経由でNSDictionaryに自動変換させてもよかったが、recordでは属性ラベルにハイフンなどは使えないのでこれでいいのだ set hintRes3 to (aNL’s setLanguageHints:hintDict) aNL’s processString:"AppleScriptで日本語を処理するよ。" set langRes4 to (aNL’s languageHypothesesWithMaximum:2) as record –> {en:1.0}– アルファベットの文字量が多いので、英語と判断されたよ! (>_<) aNL’s processString:"AppleScriptで日本語を処理するぴよ。" set langRes5 to (aNL’s languageHypothesesWithMaximum:2) as record –> {ja:1.0}– 「よ」を「ぴよ」に書き換えたら日本語の文字の量が増えて日本語と判定されたよ! (^ー^) |