3

非常に多くのドキュメントでトピックの人気を追跡しようとしています。さらに、通常の言葉の袋モデルではなく、トピックに基づいてユーザーに推奨したいと思います。トピックを抽出するために、この記事の要点を超えた自然言語処理技術を使用しています。

私の質問は、次のようにこのデータを保持する方法です。I) 各トピックの傾向データをすばやく取得できます (原則として、ユーザーがドキュメントを開くたびに、そのドキュメント内のトピックの人気が上がるはずです) II) できるドキュメントをすばやく比較して推奨事項を提供します(ここでは、クラスタリング手法の使用を考えています)

より具体的には、私の質問は次のとおりです。1) テキスト マイニング データを格納する通常の方法を使用する必要がありますか? 各ドキュメントのトピック出現ベクトルを保存することを意味します。これにより、後で異なるドキュメント間のユークリッド距離を測定できます。2) 他の方法で?

これを行うための特定のPythonの方法を探しています。私は SQL と NoSQL データベース、さらに pytables と h5py を調査しましたが、このようなシステムをどのように実装するかはわかりません。私の懸念の 1 つは、増え続けるトピックの語彙にどのように対処できるかということです。

どうもありがとうございました

4

2 に答える 2

1

この作業は SQL データベースで行うことをお勧めします。ドキュメントをそこに保存したくないかもしれませんが、トピックは適切です。

トピック専用のテーブルが 1 つ必要です。

create table Topics (
    TopicId int identity(1,1), -- SQL Server for auto increment column
    TopicName varchar(255),
    CreatedBy varchar(255) default system_user,
    CreatedAt datetime default getdate()

)

ドキュメントを識別するためのある種のドキュメント ID があると仮定して、ドキュメントに割り当てられたトピック用に別のテーブルが必要です。

create table DocumentTopics (
    DocumentTopicId int identity(1,1), -- SQL Server for auto increment column
    TopicId int,
    DocumentID int,
    CreatedBy varchar(255) default system_user,
    CreatedAt datetime default getdate()

)

ドキュメント ビューの別のテーブル:

create table DocumentView (
    DocumentViewId int identity(1,1), -- SQL Server for auto increment column
    DocumentId int,
    ViewedAt datetime,
    viewedBy int, -- some sort of user id
    CreatedBy varchar(255) default system_user,
    CreatedAt datetime default getdate()

)

次のようなクエリを使用して、特定の日付範囲の人気度別にトピックを取得できるようになりました。

select t.TopicId, t.TopicName, count(*) as cnt
from DocumentUsage du join
     DocumentTopics dt
     on du.DocumentId = dt.DocumentId join
     Topics t
     on dt.TopicsId = t.TopicsId
where du.ViewedAt between <date1> and <date2>
group by t.TopicId, t.TopicName
order by 3 desc

また、ユーザーに関する情報、時間の経過に伴う変化、およびその他の情報を取得することもできます。トピックの重みを提供できる users テーブルを作成できます (信頼性の高いユーザー、信頼性の低いユーザー)。システムのこの側面は、SQL で行う必要があります。

于 2012-06-29T22:47:30.850 に答える
1

単純な SQL テーブルがない理由

テーブル:

  • IDまたはファイル名などの主キーを持つドキュメント
  • ドキュメントと用語への外部キーを使用した観察 (おそらく一意の両方のフィールドにインデックスが付けられています)

あなたが言及した配列アプローチは、用語を理解するのに時間がかかるようです。SQL を使用すると、観測テーブルに新しい用語を簡単に追加できます。

ドキュメント テーブルにタイムスタンプが含まれている場合は、日付ごとに集計することで、簡単に集計したり、傾向を調べたりすることさえできます。

于 2012-06-29T18:48:07.317 に答える