日記/2016-09-11
雑記:ChatAnalyzer0.04 メモ。†
というわけで、立て続けでバージョンアップ。
とはいえ、これでとりあえず一段落かな。
以下、リリースノートからは読み取りづらい点の補足。
あんまり、書くこともないのですが(笑)
基本的には、友人からの提案フォローです。
アイテム名について†
まさに今週のコスミッションまわりで顕著に発生したので、対応した内容。
ROクライアントと外部サイトとで、スロットなし装備についての記載にばらつきがあります。
- 今週のコスミッション:演劇の小道具。
- ROクライアントは『演劇の小道具』と出力します。
- Roween では『演劇の小道具 [0]』となっています。
- Unitrix では『演劇の小道具[0]』です。
- Roween/Unitrix の差は、カッコの前の半角スペース有無。
ちなみに、ChatAnalyzerの持っているデータは Roween準拠。
というわけで、ROクライアントからでてきたアイテム名に仮に『 [0]』をつけてアイテム名探す、というような処理をひと手間付けた感じです。
逆パターン(クライアントで[0]つき、Roweenになし)というのには対応してません。
計算機。†
まったくもって、趣味で作ってみた機能で、実用品だとは思っていません。
こんなこともできるよ、という話。
ROクライアント上で、以下のフォーマットで発言するのが条件。
チャット入力なので、別途「キャラクター登録」と「会話メッセージの出力設定」が必要です。
計算<半角スペース>任意数式
ログ上にこんな感じで出ることを想定( _ は半角スペース)
Vice.Chaos : 計算 2*(1+3)
これで、アイテム欄に数式:上記の場合 2*(1+3)。
OC10価格列に計算結果:今回の場合 8。
・・・というように表示されます。
サポートしているのは加減乗除とカッコ。数値は整数のみで、少数未対応。
カッコの深さは .netのスタック依存。よほどの無茶をしなきゃ大丈夫だと思います。
複数行分割・結合処理について†
大前提としてご理解いただきたいのですが。
もともと、1つのチャット出力が複数行にまたがることがあるのはROクライアント側の都合。
チャットを解析する側としては「なぜ改行しているのか」は明確な判断基準が作れません。
そのため、ある程度の誤検出は「妥協している割り切り事項」という扱いです。
具体例をあげます。
例1
Vice.Chaos : こんにちわ クリップ オブ アンダー ア キャスト [1] 1 個獲得
例2
Vice.Chaos : こんにちわ、今日はいい 天気ですね ジャルゴン 1 個獲得
例3
Vice.Chaos : こんにちわ スキル使用失敗 ジャルゴン 1 個獲得
これら3つのチャット出力は、解析する側からみると論理的には等価です。
1行目は「Vice の会話メッセージ」、3行目は「アイテム獲得メッセージ」。
2行目は「会話メッセージの後半」でも「アイテム獲得メッセージの前半」でもないが、何かよくわからない行。
これをうまく処理するには文意を解釈しないと確認できない、ということです。
そこまでの論理処理を詰め込まないアプリとしては、例1を救うためには2行目・3行目を結合して解析する必要があり。
それと同じ処理を、他の2例にも同様に適用することになります。
結果、どうなるかというと・・・
クリップ オブ アンダー ア キャスト [1] 1 個獲得
天気ですねジャルゴン 1 個獲得
スキル使用失敗ジャルゴン 1 個獲得
・・・という検出がなされるわけです。
ここでまずいことに、この後者2つの『天気ですねジャルゴン』『スキル使用失敗ジャルゴン』を『意味のない言葉』として捨てることができない、という問題があります。
上記の例だと「ジャルゴン」が既知アイテムなので、がんばれば捨てることも不可能ではないのですが、これが「未知のアイテム」だとうまくいかないのです。
Vice.Chaos : こんにちわ、今日はいい 天気ですね 新しいアイテム 1 個獲得
→解析結果
天気ですね新しいアイテム 1 個獲得
この「天気ですね新しいアイテム」というアイテムが、ROクライアントに存在しているかどうかがわからない。
そのため、これを無条件に捨てるわけにもいかない。
これでも一応、分割されてなさそうなケースはいろいろ排除しているのですが、すべてを排除しきれない、という感じですね。
ちなみに、テキストに出現する最大文字数を背景にして判断するというようなやり方も考えたのですが、そうすると今度は「1つも改行していない」ログで副作用がでてしまうのです。
それでも何か手はあるようには思うのですが、正直これ以上頭使うのもばからしいので、現状で妥協、といいう感じです。
気が向いたら考えます(笑
そんな感じ。
ご意見などがあれば。