NaturalLanguage.frameworkを用いて、英語の文章の意味的な距離を測るAppleScriptです。
単語単位の意味的な距離を計算する機能はいまひとつ使い道が限定される感じですが、文単位での意味的な距離の計算には期待してしまうところです。
実際にやってみました。
やってはみたものの、なにかピンと来ないというか、このAPIは1つの文章だけで距離を測るためのものなのか、それとも複数の文の塊で計算するものなのか、、、、
文章のかたまりでも計算できているようです。いろいろサンプル文章をひろってみて距離を計測してみましたが、「なんとなくそんな感じ」の結果が返ってくるだけです。
これは別にAppleが悪いということではなくて、自然言語処理ってこんな感じです。相対的な違いでしかないので、その結果をもって「いい」「わるい」という評価が行えるわけではなく「なんとなくこっち」という判断をするだけです。ただ、間違うこともあるので、その点をあらかじめ知っておくことが重要です。
AppleScript名:英語で文章同士の距離を測る_English.scpt |
— – Created by: Takaaki Naganoya – Created on: 2024/03/13 — – Copyright © 2024 Piyomaru Software, All Rights Reserved — use AppleScript version "2.8" — Monterey (12.0) or later use framework "Foundation" use framework "NaturalLanguage" use scripting additions set targLang to current application’s NLLanguageEnglish set aEmb to current application’s NLEmbedding’s sentenceEmbeddingForLanguage:(targLang) if aEmb = missing value then return –NLLanguageJapanese is not available here in macOS 13 set aSent to "This is my book." set bSent to "We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America." set cSent to "Thanks for updating Takaaki! You have almost completed updating AdRotate to version 5.12.9! To complete the update click the button on the right. This may take a few seconds to complete! For an overview of what has changed take a look at the development page and usually there is an article on the blog with more information as well." set dSent to "He says that he like to read something with iPad." set aDist to (aEmb’s distanceBetweenString:aSent andString:bSent distanceType:(current application’s NLDistanceTypeCosine)) –> 1.350924730301 set bDist to (aEmb’s distanceBetweenString:aSent andString:cSent distanceType:(current application’s NLDistanceTypeCosine)) –> 1.374191045761 set cDist to (aEmb’s distanceBetweenString:aSent andString:dSent distanceType:(current application’s NLDistanceTypeCosine)) –> 1.168848276138 |
More from my site
(Visited 11 times, 1 visits today)