1

これは具体的な質問ではありません。Python バージョン 2.7 でクラスの最終プロジェクトを実行する方法について、いくつかのガイドラインが必要です。プログラムが基本的に行う必要があるのは、2 つのテキスト ファイルから情報をインポートすることです。1 つのテキスト ファイルには、コンマと行で区切られた書籍とその著者のリストのみが含まれています。
例:
Douglas Adams,The Hitchhiker's Guide To The Galaxy
Richard Adams,Watership Down
Mitch Albom ,天国で出会う5人

次に、ユーザーとその名前のファイルを 1 行に、合計 55 冊の書籍の評価を次の行に表示します (テキスト ボックスは、すべての評価を 1 行に入れるには十分な大きさではありません): 例:
Ben
5 0 0 0 0 0 0 1 0 1 -3 5 0 0 0 5 5 0 0 0 5 0 0 0 0 0 0 1 3 0 1 0 -5 0 0 5 5 0 5 5 5 0 5 5 0 0 0 5 5 5 5 -5
ヘラジカ
5 5 0 0 0 0 3 0 0 1 0 5 3 0 5 0 3 3 5 0 0 0 0 5 0 0 0 0 3 5 0 0 0 0 5 -3 0 0 0 5 0 0 0 0 0 0 5 5 0 3 0 0

とにかく、実際のプロジェクトでは、インストラクターが提供するアルゴリズムを使用して、書籍に対するユーザーの関心を比較します。ユーザーを入力すると、他の 87 人のユーザー全員が検索され、その書籍に対する評価が乗算され、それらがすべて加算されます。たとえば、最初の本のベンの評価は 5 で、Moose も同様です。したがって、Moose の類似度のスコアは 25 です。すべての本について、入力されたユーザーの評価に他のすべてのユーザーの評価と最も近い評価を乗算します。類似性スコア、それらを出力し、ユーザーに 5 冊の本を紹介します。基本的に、類似度スコアが最も近いユーザーが読んで高評価したが、入力したユーザーが読んでいない本。申し訳ありませんが、巨大なテキストの壁の後で大丈夫です。私は自分がしなければならないことを理解していますが、このタスクを実行する簡単な方法がわかりません. 私のためにプロジェクトを実行してくれる人を探しているわけではありませんが、このプロジェクトは私たちの成績の大部分に値するものであり、どこから始めればよいかさえわかりません。このタスクを達成するのにどのタイプのデータ構造が最も簡単かについて、誰かが私を正しい方向に導くことができれば、私は非常に感謝しています.

4

1 に答える 1

1

あなたが話しているアルゴリズムは、ベクトル空間モデルに非常によく似ています(このページも)。各ユーザーのスコアを 55 次元のベクトル (55 次元空間で線を形成する) として考え、角度が互いにどれだけ近いかを計算することで、ユーザーの線の類似性を比較します。

とにかく、アプリケーションには 2 つの基本的な部分があります。

  1. データ構造を構築するための文書解析
  2. 作成した構造を使用してアルゴリズムを実装する

これらの共通点は、データ構造を決定する必要があるということです。つまり、使用するデータ構造がアプリケーションの中心となります。

機能する可能性のある最も単純なものは、2 つのリストです。1 つのリストは本のデータです: books = [('author', 'book'), ...]. もう 1 つはスコア データですscores = [('user', [1,2,3,4,...]), ...]。そして、 がscores[n][1][m]に対応するスコアであることを確認しますbooks[m]。次に、アルゴリズムを実装する関数がこれらの構造を受け入れることを確認します。

このメソッドを最初に機能させることができることを確認します。次に、より高いレベルの抽象化を見ることができます。

クラスとオブジェクトを使用してデータを操作にバンドルし、より高いレベルの抽象化を提供できます。たとえば、書籍レコードを名前付きタプルとして保存し、一連の書籍レコードを保持し、書籍検索用のメソッド (たとえばfindByIndexfindByAuthor、など) とスコア用の同様のメソッドを持つ別のオブジェクトを持つことができます。スコアセットにブックセットを指定して、スコアがスコア インデックスからブック レコードを検索できるようにすることができます。スコアセットを受け入れて操作を実行するスコアリング クラスを作成できます。たとえば、スコアセット内の特定のユーザーの最高スコアの書籍レコードのリストを返すことができます。等々。

于 2012-04-12T03:52:02.187 に答える