はじめに
文章を分析してアドバイスをしてくれるAIアプリをリリースしました。今回はその機能と使用した技術についての記事になります。ダウンロードは画像もしくはこちらのリンクからどうぞ。ちなみに画像のキャラクターがAIの「ホメロス」です。
ホメロスができること
文体分析
ユーザーが入力した文章を分析し、その文体を5段階で評価します。数字が大きいほど丁寧な文章であるということになり、例えばWikipediaの記事やニュースはレベル5と診断されます。
逆にレベルが低いものはくだけた表現ということになります。ブログ記事など、親しみが必要な文章は低いレベルで書くのがオススメです。広報のための公式アカウントなど、親しみやすさと丁寧さの両方が求められる場合にレベルを調節するという使い方もできます。
炎上対策
文体だけでなく、文中の表現も分析しています。いわゆる「炎上」につながるような過激なものが見つかった場合は注意を促すようにしています。SNSなど、投稿を行う前にチェックをしておくと思わぬトラブルを防ぐことが可能です。
また政治的な内容など、物議を醸すような文章に関してはより高いレベル、つまり丁寧な文章で書くように推奨します。正式な文体を使えば誤解されにくいためです。
表現の抽出
具体的にどんな言葉遣いや表現が検出されたか、という詳細を確認することができます。これで目的に応じた文体のレベルに書き換えることができます。論文や正式な書類を書くときに間違った言葉遣いをしていても修正できます、
技術的ポイント
言語モデルの課題
モバイルアプリへの言語モデルの導入として問題になるのは、容量と処理という2つの負担が大きいことです。特に後者は同じiPhoneでもどの機種でも機能するか、といったことにも気を配らなくてはなりません。
既存のWebにおけるAIサービスのように外部で処理を行えば以上の課題は解決されます。ただしこの場合、自分の文章がどこかに送信されてしまうことになります。機密性の高い文書はもちろんですが、プライベートな文章などはできるだけ安全性を確保したいものです。
結論として、ホメロスは処理を完全に内部だけで行うように設計しました。オフラインでも問題なく機能しますが一方でアプリ本体のサイズは記事執筆時点で10MB以下しかありません。これにはちょっとした工夫があります。
NLPフレームワーク
iOSにおけるSwiftのフレームワークのひとつとしてNaturalLanguage
というものが存在します。これはその名の通り自然言語処理を行なってくれるものです。iOSに最初から組み込まれている機能を利用するため、これは容量と処理にほとんど負担を与えません。またiOS自体に依存しているため、機種の違いによる問題も起こりません。
その代わり、全ての機能が日本語に対応しているわけではなく万能ではありません。今回利用した文章のトークン化は日本語でも問題なく行うことができます。
import NaturalLanguage
let text = "ホメロスは人工知能で文章を分析するアプリです"
func tokenize(text: String) {
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text
let tokens = tokenizer.tokens(for: text.startIndex ..< text.endIndex)
var textTokens: [String] = []
for token in tokens {
let tokenStart = token.lowerBound
let tokenEnd = token.upperBound
let text = text[tokenStart ..< tokenEnd]
textTokens.append(String(text))
}
print(textTokens)
}
tokenize(text: text)
実行結果は以下のようになります。精度としては十分なものかと思います。
["ホメロス", "は", "人工", "知能", "で", "文章", "を", "分析", "する", "アプリ", "です"]
これらの処理は内部で完結するので、外部のサーバーとやりとりする必要がないという利点もあります。このようにiOS内の言語モデルを活用することで課題を解決できるようになりました。
SwiftUI
本アプリはそのほとんどをSwiftUIで構築しています。iOS15への変化もあり、UIKitに頼らなくてもできることがかなり増えてきました。またMac版の開発を視野に入れた上での導入でもあります。
さいごに
簡潔な説明だけにとどめたので開発のきっかけや経緯などは省略しています。もし興味を持ってくださるならばそういった内容はnoteに投稿しているので、読んでいただけると嬉しいです。
このAIは記事執筆はもちろん、SNSの投稿の際にも役立ってくれます。いいなと思った方はシェア等していただけると幸いです。開発者としてさらによりよいものにしていくので、「ホメロス」をよろしくお願いします。