2011-11-11 6 views
4

私が使っている語彙:非常に大きなラベルの付いていないNLPデータセットにFreebaseを使用してラベルを付けるにはどうすればよいですか?

名詞句 - 特定の人物、場所、またはアイデアを指す短い句。異なる名詞句の例としては、「Barack Obama」、「Obama」、「Water Bottle」、「Yellowstone National Park」、「Google Chromeウェブブラウザ」などがある。

category - どの名詞句がそれに属しているかを定義する意味概念どの人がそうしないのか。例として、「政治家」、「世帯の品目」、「食品」、「人」、「スポーツチーム」などがあります。したがって、「バラク・オバマ」は「政治家」と「人」に属しますが、 「食品」または「スポーツチーム」に属していない

私は数百万の名詞句で構成された、非常にレーキされていないラベル付きNLPデータセットを持っています。私はこれらの名詞句にラベルを付けるためにFreebaseを使いたいと思います。 Freebaseの型を自分のカテゴリにマッピングしています。私がしなければならないことは、私が持っているすべての単一のFreebaseタイプのすべての例をダウンロードすることです。

私が直面する問題は、このタイプのクエリをどのように構造化するかを理解する必要があることです。高レベルでは、質問はFreebaseに「トピックXXのすべての例は何ですか?」と尋ねる必要があります。 Freebaseは「ここではトピックXXのすべての例のリスト」と答えなければなりません。誰かが私にこのクエリの構文を与えることができれば非常に感謝します。それはPythonで行うことができるならば、それは素晴らしいだろう:)(例えば、人のために、)

答えて

4

クエリの基本的な形は

[{ 
    "type":"/people/person", 
    "name":None, 
    "/common/topic/alias":[], 
    "limit":100 
}]​ 

で使用http://wiki.freebase.com/wiki/MQL_Manual

で入手可能なドキュメントがありますPythonライブラリhttp://code.google.com/p/freebase-python/からのfreebase.mqlreaditer()は、これらをすべて循環させる最も簡単な方法です。この場合、「limit」句はクエリに使用されるチャンクサイズを決定しますが、各結果をAPIレベルで個別に取得します。

ところで、どのようになど、本から、サッカー選手から、ハーラーから、ジャック・ケネディに社長を明確にする予定ですか、などhttp://www.freebase.com/search?limit=30&start=0&query=jack+kennedyあなたはFreebaseは(出産&死亡日から追加情報を取得検討する必要があり、あなたが曖昧さを解消するために十分な文脈を持っているなら、他のタイプの割り当てられた他のタイプ)を使用することができます。

特定のポイント過去

、API http://wiki.freebase.com/wiki/Data_dumps

編集ではなく、大量のデータから動作するように簡単かつ/またはより効率的なダンプかもしれ - ここにあなたがリストを持っていると仮定し作業Pythonプログラムです「types.txt」と呼ばれるファイルにIDを入力します。

import freebase 

f = file('types.txt') 
for t in f: 
    t=t.strip() 
    q = [{'type':t, 
      'mid':None, 
      'name':None, 
      '/common/topic/alias':[], 
      'limit':500, 
      }] 
    for r in freebase.mqlreaditer(q): 
     print '\t'.join([t,r['mid'],r['name']]+r['/common/topic/alias']) 
f.close() 

クエリははるかに複雑にする場合、あなたはおそらくタイムアウトに実行してから保つために制限を下げたいのですが、うのような単純なクエリのこれにより、デフォルトの100を超える値を上げると、より大きなチャンクでクエリを実行すると、より効率的になります。

+0

@deliprao

http://cs.jhu.edu/~delip/entity_linking.pdf

トムありがとうございました!私はデータダンプを使用して終了しました。しかし、Pythonコードは、Freebaseからインスタンスを取得する方法を知りたがっているので、非常に便利です。私は曖昧さ除去に関するあなたのコメントにも感謝します。現在、私の研究グループの博士課程の学生は、機械学習の観点からこの曖昧さの問題に焦点を当てています。彼がFreebaseを使って現在のアプローチを増やすことができるかどうかは興味深いでしょう。 – Malcolm

1

ここで説明する一般的な問題は、自然言語処理におけるエンティティリンクと呼ばれています。

臆面もない自己プラグ:

が導入し、大規模なエンティティのリンクを実行するためのアプローチのためのトピックに関する私たちの本の章を参照してください。

+0

この度はありがとうございます。私はそれが便利になると確信しています。 – Malcolm

関連する問題