皮肉を検出するスクリプトを教える方法は?[閉まっている]


11

私は現在、基本的に指定されたフレーズと一致し、一致ポイントに基づいて事前定義された応答を提供する楽しいスクリプトを作成しています。ライブフィードに基づいて情報を取得したり、タスクを実行したり、逸話を伝えたり、彼女とチャットしたりできます。

既にbadwords、caps lock、またはその両方の検出機能が組み込まれています。プログラムには女の子の名前があり、私はロジック用語でできるだけ女の子らしい女の子になるようにしようとしました(たとえば、ほとんどの女の子が質問に答えるために700ミリ秒かかることは誰もが知っています、もちろん冗談です)。以下に小さな例を示します。

クライアント:あなたの問題は何ですか?
キク:私と一緒に使ってはいけません!
クライアント:####あなた
Kiku:どうしてあなたは私にそんなに意地悪なのですか:/

しかし、私は本当に皮肉の機能を追加したいと思います。皮肉に何かを書くと、彼女はそれを検出し、それに応じて対応します。さて、これはトリッキーな部分です。スクリプトをどのように教えますか、皮肉は何ですか?

より具体的に私に。今日使用されている最も一般的な皮肉な言葉は何ですか?または、その統計を取得する方法は?特定のフレーズのコンテキストをスクリプトに理解させるにはどうすればよいですか?

更新

この質問は多くの誇大広告になっているので、私は物事がもう少しクリアされるべきだと思います。スクリプトが皮肉を完全に検出することは基本的に不可能であることは非常に明白です。少なくとも合理的な問題では。ただし、ある程度の皮肉が検出される可能性があると思います。

現在のところ、スクリプトで非常に限定的な皮肉を検出できるようになっています。いくつかの一般的な皮肉な言葉を事前に定義しました(しかし、それだけでは役に立ちません)そして、大文字と引用符で囲まれた:THANKS you are so smartやのような単純なものに最初に一致しますoh you are so "SMART"

スクリプトの主な機能はタスクを実行するか、情報を取得することであり、あとがきはそれが意図したものかどうかを尋ねます。それから私は、「感謝」を特別な変数として追加することを考えました。だから、yeah thanksまたはwhatever thanks可能な皮肉をトリガすると、スクリプトがあなたに尋ねます:「?私は皮肉を検出ください」あなたの最善の策は、「申し訳ありません」と言うことです。そうしないと、警告ポイントが追加され、制限に達すると、無視され始めます。

これらの非常に単純なアルゴリズムは実際に機能するように見えるため、このアイデアには、もちろん多くのチューニングと微調整の後、未来があります。ただし、同じアイデアを念頭に置いてオープンソースソフトウェアを作成する方が賢い人がいるかもしれません。次に、この機能をWeb上の多くの機能にフックできます。カスタマーケアはおそらく最も恩恵を受けるでしょうが、この種のソフトウェアは「フラグ可能」コンテンツの検出にも使用できます。


14
スクリプトが実際にできるようになるまで理解して(というよりも、キーワードを拾って)言われていることが、私はそれが最も皮肉シナリオをキャッチすることは不可能だと思う
ロブ・

26
@Kalleここで明確にしましょう。皮肉は、話し言葉で最も繊細で高度なデバイスの1つです。あなたが英語のネイティブスピーカーで、声のトーンや関連するコンテキスト情報などの微妙な問題を完全に理解できる場合でも、皮肉を定期的に検出することはできません。非ネイティブスピーカーは、ほとんどチャンスがありません。それをテキストにすると、ネイティブスピーカーでさえほとんどチャンスがありません。そして、あなたはこの問題を解決するために、最も単純な文章でさえぼんやりと理解するのに苦労するコンピューターが欲しいですか?これを音声およびテキスト分析の生涯を持つ人にお任せください。
-doppelgreener

17
スクリプトに皮肉を認識させますか?それは本当に便利です;)
zenzelezz

12
さあ-でも、シェルドン・クーパーは、皮肉を検出することはできません...
ポール・R

3
この質問は、特に「建設的ではない」としてではなく、閉じられるべきではないと思います。拘束力がない場合は、今すぐ再投票を投じるつもりでしたが、この質問は、特に最新の編集に関しては、いくつかの再投票に値すると思います。
アダムリア

回答:


17

完全な自然言語処理システムと事実のデータベースがIBM Watsonシステムにある場合は、いくつかのステートメントに皮肉の可能性があるとフラグを立てることができます。たとえば、「あなたの母親は癌にかかっており、あなたはちょうど解雇されたと聞いています!」「うん、人生は素晴らしいじゃない!」がんになることや仕事を失うことは、一般に良い経験とは言えないことを認識できるため、フラグを立てることができます。

ワトソングレードのシステムをまとめるためのリソースがないと思います。一般的に使用される皮肉なフレーズのデータ​​ベースを作成し、ターゲットステートメントと皮肉データベースの間で何らかのテキストマッチングアルゴリズムを使用できます。皮肉に使用されるすべてのフレーズが誠実に頻繁に使用されるため、あまり効果的ではないと推測する必要があります。たとえば、「これはすてきなXです。」通常、誠実に使用されますが、時には皮肉にも使用されます。

皮肉は詐欺と非常に密接に関連しています。皮肉を使用している人がそれに挑戦するときにそれを拒否することは珍しくなく、彼らの言葉の選択は否定を可能にします。これは、優れた皮肉検出器は、おそらくチューリングテストに合格する会話型プログラムと同じくらい難しい問題であることを意味すると思います。


1
ご回答有難うございます。これは、品質が上記のものよりも間違いなく優れているという答えです。実際のフレーズのデータ​​ベースを作成することはあまりにも大きくなると思います。ただし、単語のデータベース+他のメソッドは、実際に機能させることができます(100%ではなく、0%でもありません)。確認手順を追加する予定です。スクリプトがわずかなレベルの皮肉を検出すると、次のように尋ねます。「OH NO」と応答すると、皮肉を確認し、実際に怒り、しばらくの間あなたを無視します(時間は皮肉のレベルによって決まります)。
カレH.Väravas11年

3
皮肉はすべて文脈に関するものであり、皮肉に使用される可能性が高い少なくともいくつかのフレーズがあるので、私は本当にあなたがフレーズに固執したいと思うと思います。「うん」は皮肉ではなく、「右」は皮肉ではありませんが、「うん、そうです!」おそらく皮肉をこめてもっと頻繁に使用されます。
チャールズE.グラント

6
ここでの回答の質に関しては、これは部分的にあなたの責任であると言わざるを得ません。自然言語処理は、いくつかの有用な手法を提供できる有名な分野ですが、既存の方法を調べるための調査を行ったことを示すものではありません。それは難しい問題であり、SO投稿で一般的に答えられるものではありません。自然言語処理のトピックに関する本がたくさんあります。
チャールズE.グラント

43

<サーカス>

if(string.Contains("<Sarcasm>")) containsSarcasm = true;

</ Sarcasm>

正直なところ、私はこれをどのようにすればいいのか分かりません。そもそも実生活の人々の約30%だけが皮肉を「得る」と思うので、コンピューターにそれを認識させ、理解させることは非常に難しい作業のように聞こえます。

編集 元の投稿へのコメントに基づいて、依頼されているタスクの極端な難しさを完全に説明したと思います。はい、私の投稿の前半は皮肉でした。作成したマークアップタグを使用して、その事実を強調しました。非常に困難な問題に対する些細な解決策について皮肉なコメントを投稿することにより、その「皮肉」が「役に立たない」と解釈されると、この質問が生じます。

書かれた皮肉を認識できない場合、それを認識するアルゴリズムをどのように記述しますか?

ああ、そしてアンナは、誰かが「I think ...」という用語を文に含める場合、それは通常、それが述べられている意見であることを示しており、必ずしも厳しい事実を研究しているわけではありません。


3
-1すみません、なぜこの答えが賛成票を得ているのかわかりません。提供されるコードは、目の前の質問とは完全に無関係であり、答えの2番目の部分は「私にはわからない」と言っています。あなたの答えは30%のトピックに基づいており、本当に助けになるものでも、良い方向性を示すものでもありません。
カレH.Väravas11年

18
ポスターがこれを行うための実用的な方法がないことを指摘したので、それは支持されています。人間はしばしば皮肉を検出できないため、機械を教える方法はありません。また、皮肉は多くの場合、声のトーンによって伝えられるため、オンライン通信で誤解されることがよくあります。
アンディウェイト

1
@Andy Waiteはい、もちろんです。私が言ったように、彼の答えは話題の30%です(追加のテキストがなかったとき、彼は賛成票を獲得し始めました。)それでも、私はその答えを受け入れません。しかし、50%の一致でも?この答えは基本的に、「あなたの質問を理解できません。それは不可能だと思います。難しいと思います、やめてください!」私は主にのみ、次へ、プログラマで回答のこれらのタイプを取得します..「なぜあなたはこれをやっているフレームワークを使用しますか?!」
カレH.Väravasに

4
@Kalle私はあなたに同意します。この答えは、皮肉な部分、「わからない」部分、および推測による部分です(30%?本当に?それをバックアップできますか?)。これはまったく役に立たないので、せいぜいコメントにすべきです。
アダムリア

3
興味深いコメントスレッド-明らかに人間であっても、皮肉(またはその欠如)を確実に検出することはできません。
Piskvorは11:09

11

皮肉な検出の問題は、計算言語学の未解決の問題です。このようなことをスタック交換するよりも、Google学者を検索する方が良いでしょう。ただし、この問題についてはある程度の進展がありました。話された皮肉、堅牢な認識器は「スペクトルおよびコンテキスト機能」を使用して構築することができ皮肉並びにヒト注釈を検出する(著者は主張する)こと。この論文の著者は、したがって生のテキストは皮肉を検出するのに十分ではないと主張している-実際、彼らは言われいる実際の言葉を無視することでより良い結果を得た。

ツルら。また、彼らのSASIアルゴリズムでちょうど昨年のテキストの皮肉検出のいくつかの興味深い結果を報告しました。また、別の論文で追加のフォローアップ調査結果を報告しています。

いずれにせよ、これは計算言語研究の最先端です。誰もが銀の大皿にあなたにlibsarcasmを渡すことを期待しないでください。大規模なトレーニングデータセットと、皮肉な検出器を調整するための多くの自由時間が必要になります。さらに、77%の精度(SASIの論文で報告されている)では、皮肉なフラグのみに基づいて投稿を拒否するには不十分です。


うーん、77%?それはほとんどのより良いようです。(皮肉は意図されていません)
ピスクバーは建物を去りました

@Piskvor、かなり可能性がありますが、私はそれに関する統計を持っていません。少なくともオーディオのものよりも精度が高いです。
-bdonlan

2

この答えは非常に現実的なアプローチではないと思いますが、あなたがそれを行うためのリソースを持っていれば、それは可能だと思います。人間がコンピュータで読み取れない単語を解読するために使用するGoogleのreCaptchaプロジェクトを考えてみてください(「詳細なRecaptchaページ」を参照)。私はあなたが何かの人間が少なくともある把握するマシンを取得しようとしているという点で問題が、似ていると信じてより良いではすでにやって。

型付けされた会話コンテキスト内で何百万人もの人々に皮肉を識別してもらうためのリソースがあると想像してください。多くの人に、皮肉が実現した会話の正確な瞬間と、その識別に印を付ける必要があることを認識する前の会話のわずかな時間をあなたに提出するように依頼できると想像してください。これは、たとえば、プログラムがアクセスできるデータベースに保存できます。次に、ユーザーが会話を入力しているときに、「類似の」会話用にデータベースをフィルタリングできます。

類似性をどのように評価するかは、考える必要がありますが、おそらくすでに存在する研究があると信じています。これは、スペルミスの修正の背後にある理論と非常に似ていると思います。いずれにせよ、入力される会話が実際に皮肉であるという確率的な値になり、ある時点でしきい値を提供する必要があります。

「その皮肉はどうだった?」という質問を提示するというあなたのアイデアも好きです。ユーザーに通知し、その応答を使用してより正確な決定を下します。

私の答えが完全な無駄ではないことを願っています。この努力で幸運を祈ります。

-Asaf



1

私の2セント:

フレーズで皮肉を認識する方法について心理学者に尋ね、その情報を入力と比較します。

しかし、それは非常に難しいプロジェクトであり、その努力を使って、世界で最高のOSを確実に行うことができます:P

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.