-1

単語を検索して文と段落全体を取得したい。例: 「何百人もの政治犯が釈放され、検閲規則が緩和されました。その結果、EU と米国はビルマに対する制裁の大部分を解除しました。」というテキストで「釈放済み」を検索すると、「数百人」が返されます。の政治犯が釈放され、検閲規則が緩和されました。」段落全体も同様です。

4

3 に答える 3

1

を使用indexOfして、段落の区切りを前後に検索します。<p>またはかもしれません\n

public static String findParagraph(String source, String searchText, String paragraphSeparator)
{
    final int locationOfSearchTerm = source.indexOf(searchText);
    if (locationOfSearchTerm == -1) return null;

    int paragraphEnd = source.indexOf(paragraphSeparator, locationOfSearchTerm + searchText.length);

    //if we didn't find an end of a paragraph, we want to go the end
    if (paragraphEnd == -1) paragraphEnd = searchText.length;

    int paragraphStart = source.lastIndexOf(paragraphSeparator, locationOfSearchTerm);

    //if we didn't find a start of a paragraph, we want to go the beginning
    if (paragraphStart == -1) paragraphStart = 0;

    return searchText.subString(paragraphStart, paragraphEnd - 1);
}
于 2013-05-24T12:29:49.577 に答える
1

データはどのように構造化されていますか?

おそらく、1 ~ 2 個以上の改行文字を探すことで段落を取得できます。文については、テキストのセグメンテーションを行う必要があります。たとえば、Python の NLTK ライブラリを使用すると、事前にトレーニングされたPunkt 文の segment-erMr.を使用できます。これは、ピリオドが含まれていても、文の終わりをマークしたりマークしたりしU.S.A.ないことを学習するために、大規模なコーパスでトレーニングされます。 (この質問を参照してください:文の Python 分割テキスト)。

テキストを段落と文に分割できたら、コーパスを線形パスで処理するだけにするか、逆索引を作成するなどの情報検索手法を使用してデータに索引を付けるかを決定する必要があります。 Apache Lunceのような既存のソリューション。

于 2013-05-24T11:42:05.847 に答える
0

これを行う方法はたくさんあります。これが1つです:

文と段落を関連付けるマップを作成します。

Map<String, String> map = new HashMap<String, String>();
map.put("Hundreds of political prisoners have been released, and censorship rules have been relaxed.", The EU and US have lifted the majority of sanctions against Burma as a result.);
...

すべてのテキストでマップを作成したら、次の方法で検索できます。

public Map<String, String> searchInSentence(String toFind, Map<String, String> texts){
    Map<String, String> result = new HashMap<String, String>();
    for(Entry<String, String> entry : texts.entrySet(){
       if(entry.getKey().contains(toFind){
           result.put(e.getKey(), e.getValue();
        }
    }

    return result;
}

文がキーで段落が値である Map を返します。

于 2013-05-24T11:48:12.723 に答える