15

小さなC#アプリケーションを作成していて、単純なプレーンテキストからタグクラウドを抽出したいと思います。それができる機能はありますか?

4

10 に答える 10

13

タグ クラウドの構築は、私が見ているように、2 つの部分からなるプロセスです。

まず、トークンを分割してカウントする必要があります。文書の構造や言語によっては、スペースで区切られた単語を数えるのと同じくらい簡単かもしれません。ただし、これは非常に素朴なアプローチです。the、of、a などの単語は単語数が最も多く、タグとしてはあまり役に立ちません。最も一般的で無意味なタグを除外するために、ある種の単語ブラック リストを実装することをお勧めします。

(タグ、カウント) 方法で結果を取得したら、次のコードのようなものを使用できます。

(Searches は SearchRecordEntity のリストであり、SearchRecordEntity はタグとそのカウントを保持します。SearchTagElement は TagCategory 属性を持つ SearchRecordEntity のサブクラスであり、ProcessedTags は結果を保持する SearchTagElements のリストです)

double max = Searches.Max(x => (double)x.Count);
List<SearchTagElement> processedTags = new List<SearchTagElement>();

foreach (SearchRecordEntity sd in Searches)
{
    var element = new SearchTagElement();                    

    double count = (double)sd.Count;
    double percent = (count / max) * 100;                    

    if (percent < 20)
    {
        element.TagCategory = "smallestTag";
    }
    else if (percent < 40)
    {
        element.TagCategory = "smallTag";
    }
    else if (percent < 60)
    {
        element.TagCategory = "mediumTag";
    }
    else if (percent < 80)
    {
        element.TagCategory = "largeTag";
    }
    else
    {
        element.TagCategory = "largestTag";
    }

    processedTags.Add(element);
}
于 2008-12-10T00:54:27.457 に答える
9

http://thetagcloud.codeplex.com/を使用することを強くお勧めします。タグのグループ化、カウント、およびレンダリングを処理する非常にクリーンな実装です。また、フィルタリング機能も提供します。

于 2009-06-10T12:10:07.447 に答える
5

http://sourcecodecloud.codeplex.com/をご覧ください。 ここに画像の説明を入力

于 2012-02-08T14:03:58.867 に答える
4

これはASP.NET Cloud CONtrolです。これは、少なくとも開始するのに役立つ可能性があり、完全なソースが含まれています。

于 2008-12-10T00:47:24.990 に答える
3

CodeProjectのプロジェクトである WordCloudを参照してください。これには 430 個のストップ ワード ( 「 the、 」 ana「」など) が含まれており、Porter ステミング アルゴリズムを使用します。このアルゴリズムは、単語を語根に減らして、「ステミングされたステミング ステム」がすべて同じ単語の 1 回の出現としてカウントされるようにします。

それはすべて C# で行われます。作成するビジュアライゼーションの代わりに HTML を出力するように変更するだけです。

于 2008-12-10T01:21:51.207 に答える
1

これを見てください。それは私のために働いた。これを解決するのに役立つ WebExample という名前の Examples フォルダーの下にプロジェクトがあります。 https://github.com/chrisdavies/Sparc.TagCloud

于 2013-08-21T11:21:58.853 に答える
1

アルゴリズムについては、この回答をご覧ください。

Wordle のようなワード クラウドを実装するアルゴリズム

回答に記載されている「DisOrganizer」は、目的に役立つ可能性があります。少し変更するだけで、この「ディスオーガナイザー」にイメージを提供させることができます。PS: コードは C# で書かれています https://github.com/chandru9279/zasz.me/blob/master/zasz.me/

于 2012-06-19T12:18:21.520 に答える
0

これがまさにあなたが探しているものかどうかはわかりませんが、始めるのに役立つかもしれません:

単語の頻度をカウントするLINQ(VBですが、現在C#に変換しています)

Dim Words = "Hello World ))))) This is a test Hello World"
Dim CountTheWords = From str In Words.Split(" ") _
                    Where Char.IsLetter(str) _
                    Group By str Into Count()
于 2008-12-10T00:44:01.207 に答える
0

カテゴリとそれに含まれるアイテムの量を、ある種のコレクションまたはデータベース テーブルに格納できます。

そこから、特定のカテゴリのカウントを取得し、特定の境界を持つことができます。したがって、パラメーターはカテゴリであり、戻り値はカウントです。

そのため、カウントが 10 を超えて 20 未満の場合、.CSS スタイルを特定のサイズのリンクに適用します。

これらのカウントをキーとしてコレクションに保存し、キーが戻り値と一致する値を取得できます (前述のとおり)。

このプロセスのソース コードは手元にありませんが、これらすべてを実行するための単純な関数も見つかりません。コントロール、はい (上記のように)。

これは非常に伝統的なアプローチであり、雑誌のチュートリアルなどで見た標準的な方法であり、私が考える最初のアプローチです (必ずしも最良であるとは限りません)。

于 2008-12-10T01:17:48.127 に答える
-1

特定のソース (テキスト ファイルおよびその他のソース) からキーワードを抽出し、TagCloud を Zooming User Interface (ZUI) として表示するZoomable TagCloud ジェネレーター

于 2012-06-13T19:52:42.893 に答える