10

ここで質問すると、自動検索によって返される質問のツールのヒントは、質問の最初の少しを与えられますが、それらのかなりの割合は、質問を理解するのに役立つテキストを提供していません。タイトル。質問の無駄な部分を取り除くためのフィルターを作成する方法について誰かが考えていますか?

私の最初のアイデアは、一部のリストの単語のみを含む主要な文をトリミングすることです(たとえば、ストップワード、タイトルの単語、およびタグとの相関が非常に弱いSOコーパスの単語、つまり、タグに関係なく、どんな質問でも発生します)

4

1 に答える 1

16

自動テキスト要約

自動テキスト要約に興味があるようですね。問題、関連する問題、および利用可能なアルゴリズムの概要については、Das と Martin の論文A Survey on Automatic Text Summarization (2007) を参照してください。

シンプルなアルゴリズム

シンプルだがかなり効果的な要約アルゴリズムは、元のテキストから、最も頻繁に使用されるコンテンツ ワード (つまり、ストップ リストワードを含まない最も頻繁に使用されるもの) を含む限られた数の文を選択することです。

Summarizer(originalText, maxSummarySize):
   // start with the raw freqs, e.g. [(10,'the'), (3,'language'), (8,'code')...]
   wordFrequences = getWordCounts(originalText)
   // filter, e.g. [(3, 'language'), (8, 'code')...]
   contentWordFrequences = filtStopWords(wordFrequences)
   // sort by freq & drop counts, e.g. ['code', 'language'...]
   contentWordsSortbyFreq = sortByFreqThenDropFreq(contentWordFrequences)

   // Split Sentences
   sentences = getSentences(originalText)

   // Select up to maxSummarySize sentences
   setSummarySentences = {}
   foreach word in contentWordsSortbyFreq:
      firstMatchingSentence = search(sentences, word)
      setSummarySentences.add(firstMatchingSentence)
      if setSummarySentences.size() = maxSummarySize:
         break

   // construct summary out of select sentences, preserving original ordering
   summary = ""
   foreach sentence in sentences:
     if sentence in setSummarySentences:
        summary = summary + " " + sentence

   return summary

このアルゴリズムを使用して要約を行ういくつかのオープン ソース パッケージは次のとおりです。

Classifier4J (Java)

Java を使用している場合は、Classifier4JのモジュールSimpleSummarizerを使用できます。

ここにある例を使用して、元のテキストを次のように仮定します。

Classifier4J は、テキストを操作するための Java パッケージです。Classifier4J にはサマライザーが含まれています。Summariser は、テキストの要約を可能にします。サマライザーは本当にクールです。他の Java サマライザーはないと思います。

次のスニペットに見られるように、簡単な 1 文の要約を簡単に作成できます。

// Request a 1 sentence summary
String summary = summariser.summarise(longOriginalText, 1);

上記のアルゴリズムを使用すると、 が生成されClassifier4J includes a summariser.ます。

NClassifier (C#)

C# を使用している場合は、 NClassifierと呼ばれる Classifier4J から C# へのポートがあります。

Tristan Havelick の NLTK 用サマライザー (Python)

Python の自然言語ツールキット (NLTK)を使用して構築された Classifier4J のサマライザーの作業中の Python ポートは、こちら で入手できます。

于 2010-05-14T00:40:12.700 に答える