「ねえマイクロフト、ウィキペディアはエイブラハムリンカーンについて何と言っていますか」
マイクロフトは答えます:「エイブラハムリンカーンについて」
これはadaptの問題だと思います。 代わりに、 what does wikepedia say
が常にsay
オーバーライドするように、正規表現の長さに基づいて各一致の信頼度を返す必要があります。
同意する; 昨年、私は比較的少数の操作のためにmycroftのようなインテント解析システム(これもPythonで)を作成し、同じ理由でこの重み付けを一致信頼度に追加しました。
それはうまく機能しましたが、フレーズの先頭にどれだけ近いか(または実際には、受け取った単語から次の未解析の単語のセットがどこから始まったかに基づいて)に一致を重み付けしました。 各スキルはそのフレーズを処理し、必要に応じて再解析するために最後に残った単語を返します。特に、たとえばで区切られた副次句の一部である場合はそうです。 「and」または「then」。
注:TTSが一致率を向上させるために代替として返されることがある各「スキル」単語セットに単語の「音のような」リストを追加してみました。その後、ベストマッチを実行し、信頼度を適切に比例配分しますが、限られた機能セットを使用しても、空き時間プロジェクトとして返される認識されたすべてのバージョンに対応するには、非常に困難になりました。
Adaptは、「発話のほとんどのカバレッジ」の順序で解析結果を生成しますが、これは必ずしも最も信頼性の高い順序であるとは限りません。 信頼度を計算する場合、正規表現は不正確さに基づいて重み付けが低くなり、すべての一致(正規表現またはエンティティリテラル)には、表された発話のパーセンテージに基づいた信頼度があります。 Adaptの最新リリース(v0.3.0)は、オプションで、解析結果内の個々のタグの信頼性を公開します。
{u'ArticleTitle': u'say about foobar', 'intent_type': u'WikipediaIntent', 'confidence': 0.375, 'target': None, u'WikipediaKeyword': u'wikipedia'}
デバッガーでこれをステップスルーすると、adaptから生成された4番目または5番目の解析結果は、実際には話す意図よりも高い信頼性を持ち、ウィキペディアの意図をトリガーすることがわかります。 解析結果はガベージ(クエリ:エイブラハムリンカーンについて言う)ですが、Adaptは自然言語テキストからフリーテキスト検索クエリを解析するのはあまり得意ではありません。 ここでは正規表現は必要悪ですが、かなり酷使されており、正規表現を使用するスキルが多いほど、このような衝突の可能性が高くなります。
少なくとも私にとって、このバグはhttps://github.com/MycroftAI/mycroft-core/commit/4d6defd126c0a0b091718f8e15f8b033a84f9aa1によって修正されました
このバグは修正されたようです。