4

スローガン (複数の単語からなる短いフレーズ) のリストがあり、人々が最も気に入ったスローガンに投票したとします。また、あるスローガンが他のスローガンよりも人気になった単語があれば、それを評価したいとします。これを達成するための最良の方法は何ですか?私が最初に考えたのは、スローガンのセット内のすべての固有の単語を見つけて、その単語を含むすべてのスローガンの平均投票数として各単語をスコア付けすることでしたが、頻度も何らかの形で作用するはずです。以下が真である必要があります。

  • 単語 A が最も多くの票を獲得したスローガンにのみ出現し、単語 B が 2 番目に多くの票を獲得したスローガンにのみ出現する場合、単語 A はより「人気を生み出す」
  • ただし、単語 A が 1 位のスローガンにのみ出現し、単語 B が 2 位と 3 位のスローガンの両方に出現する場合、より多くのスローガンを上位に押し上げたので、単語 B が勝つはずです。
  • ただし、上部のスローガンでの単語 A の 1 回の出現は、他のスローガンでの単語 B の 3 回の出現よりも、それらがパックの中間または下半分にある場合 (つまり、採点と採点の頻度のバランスをとる必要があります)。

また、一般的によく使われる単語 (「the」や「of」など) も削除したいと考えています。これは、過去に尋ねられた流行語を特定することに関する質問に関連していますが、時間の経過に伴う変化は要因ではないため、異なります. 文学に関する限り、これについて正しい方向に向けられただけでうれしいのですが、何を探すべきか本当にわかりません. これは、他の人が対処するクラスの問題ですか?

4

3 に答える 3

2

これは機械学習の質問です。教師ありデータからモデルを学習しようとしています。これを行うには、Perceptron や SampleRank ( pdf )のような単純なアルゴリズムを実行できます。

最初に、スローガンの言葉に適用される機能を定義します。特徴は単語全体で共有できます。たとえば、「平和」という単語の特徴は次のようになります。

  • "平和"、
  • "名詞"、
  • "抽象名詞",
  • "短い名詞",
  • "pで始まる",
  • "'s' 音で終わる",
  • ...

最初の機能「peace」は、「peace」でのみ起動する独自の機能ですが、他の機能は他の単語でも起動できます。

各機能には重みがあります (高いほど良い)。つまり、特徴ベクトルと重みベクトルがあります。これにより、任意のスローガンに重み (スコア) を割り当てることができます (スローガンの単語に発火するすべての重み付けされた機能の合計のみ)。すべての重みは 0.0 に初期化されます。

トレーニングを開始します。

スローガンのすべてのペアをループします。各ペアについて、(すでに持っている投票による) 真のランキングを知っています。次に、機能とその現在の重みに従ってランキングを計算します。真のランキングと現在の機能の重み (つまり、現在のモデル) によるランキングが同じ場合は、次のペアに進むだけです。モデルが間違ったランキングを割り当てた場合は、機能の重みを修正します。より良いスローガン (人々の投票によるとより良いスローガン) で起動する機能の重みに 1.0 を追加し、起動する機能の重みから 1.0 を引きます。悪いスローガンについて (そのスコアは明らかに高すぎたので、今は下げています)。これらの重みの更新は、モデルが次のペアに割り当てるスコアなどに影響します。

モデルがほとんどのペア (またはその他の収束基準) を正しく取得するまで、このループを数回実行します。

通常、実際に 1.0 を足したり引いたりするのではなく、eta に 1.0 を掛けます。ここで、eta は実験的に設定できる学習率です。通常、トレーニングの開始時は高く、トレーニング中はウェイトが正しい方向に移動するため、徐々に低くなります。(確率的勾配降下も参照してください。) 開始するには、定数として 0.1 に設定するだけです。

この手順は、ストップ ワード ("the"、"of" など) を処理します。これは、良いスローガンと悪いスローガンで同じ頻度で発生する必要があるためです (実際にそうでない場合は、それも学習します)。

トレーニング後、学習した特徴の重みに従って各単語のスコアを計算できます。

于 2010-12-04T01:37:29.083 に答える
0

How about Bayesian inference?

于 2010-12-03T22:28:55.450 に答える
0

これを行うアルゴリズムを使用すると思います:

  1. ストップ ワード (一般的な単語) を排除します ( http://en.wikipedia.org/wiki/Stop_word )
  2. 単語の正規化と語幹化 ( http://en.wikipedia.org/wiki/Stemming )
  3. 正規化された単語の頻度と投票を計算する
  4. 正規化された単語を投票 / 頻度で並べ替える
于 2010-12-03T22:33:35.750 に答える