指定のテキストの言語コードや言語名を取得するAppleScriptです。
比較的短い文章でも言語判定ができるという特徴がありますが、文章が長くなったり、セリフの文章が増えると日本語として判定できないといった欠点も持っています。
テキストを文ごとに分割し、「」といった記号を削除すると言語判定の精度を維持できています。とくに、文学作品などのテキストは得意ですが、ラノベ風の文章の言語判定は苦手なようです。
こうした派手めの機能にはどうしても得手、不得手というか構造的にあからさまな弱点を抱えることが多いので、早めに弱点を把握しておくことが重要です。
AppleScript名:指定のテキストから言語コードや言語名を取得する |
— Created 2017-04-10 by Shane Stanley use AppleScript version "2.4" use scripting additions use framework "Foundation" set str1 to "Ilmatyynyalukseni on täynnä ankeriaita." set str2 to "Luftputebåten min er full av ål" set str3 to "私の名前は長野谷です。" set str4 to "أنشأ فوكوزاوا يوكيتشي (١٨٣٥–١٩٠١) في اكتوبر عام ١٨٥٨ مدرسة للدراسات الهولندية (تحولت بعد ذلك لمدرسة للغة الانكليزية) في ايدو (طوكيو حاليا). يعد فوكوزاوا يوكيتشي من أحد مؤسسي نهضة اليابان الحديثة، فونهتم بمدرستنا بنوع التعليم الذي ينمي القدرات الإبداعية والفنية التي يتطلب توافرها في طلاب الجامعة بحيث لا ينشغل الطلاب باختبار قبول الجامعات ونحترم استقلالية وتفرد كل طالب وذلك في جو دافئ في بيئة طبيعية مليئة بأشجار" set str5 to "게이오 기주쿠는 어디에나 있는 학교의 하나로 만족하지 않습니다. 게이오 기주쿠는 기주쿠(義塾, 의숙)에서 배우는 학생과 교원이 일본의 ’기품의 원천’ 및 ’지덕의 모범’이 되는 것을 목표로 하는 학숙(學塾)입니다. " set str6 to "庆应义塾不是仅仅满足于成为常常见到的一般性学校。" set a1Res to guessLanguageCodeOf(str1) of me –> "fi" set a2Res to guessLanguageCodeOf(str2) of me –> "sv" set a3Res to guessLanguageCodeOf(str3) of me –> "ja" set a4Res to guessLanguageCodeOf(str4) of me –> "ar" set a5Res to guessLanguageCodeOf(str5) of me –> "ko" set a6Res to guessLanguageCodeOf(str6) of me –> "zh-Hans" set b1Res to guessLanguageOf(str1) of me –> "Finnish" set b2Res to guessLanguageOf(str2) of me –> "Swedish" set b3Res to guessLanguageOf(str3) of me –> "Japanese" set b4Res to guessLanguageOf(str4) of me –> "Arabic" set b5Res to guessLanguageOf(str5) of me –> "Korean" set b6Res to guessLanguageOf(str6) of me –> "Chinese" on guessLanguageOf(theString) set theTagger to current application’s NSLinguisticTagger’s alloc()’s initWithTagSchemes:{current application’s NSLinguisticTagSchemeLanguage} options:0 theTagger’s setString:theString set languageID to theTagger’s tagAtIndex:0 |scheme|:(current application’s NSLinguisticTagSchemeLanguage) tokenRange:(missing value) sentenceRange:(missing value) return ((current application’s NSLocale’s localeWithLocaleIdentifier:"en")’s localizedStringForLanguageCode:languageID) as text end guessLanguageOf on guessLanguageCodeOf(theString) set theTagger to current application’s NSLinguisticTagger’s alloc()’s initWithTagSchemes:{current application’s NSLinguisticTagSchemeLanguage} options:0 theTagger’s setString:theString set languageID to theTagger’s tagAtIndex:0 |scheme|:(current application’s NSLinguisticTagSchemeLanguage) tokenRange:(missing value) sentenceRange:(missing value) return languageID as text end guessLanguageCodeOf |
More from my site
(Visited 56 times, 1 visits today)
NLLanguageRecognizerで自然言語の推定 v2 – AppleScriptの穴 says:
[…] 以前にNSLinguisticTaggerで言語推定を試してみましたが、ネット上のラノベ文書(セリフが多く、人名がカタカナばっかり)を与えてみたら日本語を日本語として判定せず、「使えない機能 […]