そこで、段落を文、単語、文字に分割するセンテンス トークナイザーを作成しました。これらはそれぞれデータ型です。しかし文系は二段式です。. .' それを捨てて、一度に1文字ずつ行くのを感じますが、スペースのない「...」であれば問題なく動作します。
そのため、出力は少しつなぎ合わされていますが、二次処理を行うことができれば、完全に機能します。それが私の質問の出番です...途中で何かを失うことなく、文末の句読点のない各文を前の文に追加できるシステムを書く方法がわかりません。
出力がどのように見えるか、およびどのように表示する必要があるかの例を次に示します。
接合されたいくつかの文...
そして続きがあります
これは米国が混同することはできません
その中で
最後の文...
略語が文を終了しました!
そのため、通常の文末区切り文字で終わらない文オブジェクト、つまり「.」、「?」、「!」次の文に追加する必要があります...実際の文末区切り文字を持つ文が存在するまで。これを難しくしているもう1つのことは、「. . .' 文の終わりではなく、継続としてカウントされます。したがって、それも追加する必要があります。
これが必要な方法です:
つなぎ合わされた…そして続きのある文。
これは米国が混同することはできません
その最後の文では...略語が文を終わらせました!
これが私が使っていたコードです:
last = []
merge = []
for s in stream:
if last:
old = last.pop()
if '.' not in old.as_utf8 and '?' not in old.as_utf8 and '!' not in old.as_utf8:
new = old + s
merge.append(new)
else:
merge.append(s)
last.append(s)
そのため、この方法にはいくつかの問題があります...
1つの文を別の文に追加するだけですが、追加する必要がある文が2つまたは3つある場合は追加しません。
句読点が含まれていない場合は、最初の文が削除されます。
' には対応していません。. .' 続きとして。私はこれについて何も書いていないことを知っています。それは、「.」の数を数えることができたので、省略形で終わる文でその問題にアプローチする方法が完全にわからないためです。が文の中にありますが、「USA」は 3 ピリオドとしてカウントされるため、実際には 'USA' によって破棄されます。
だから私は__add__
文クラスにメソッドを書いたので、あなたはそれを行うことができ、それはsentence + sentence
一方を他方に追加する方法として機能します。
これについて何か助けていただければ幸いです。不明な点がありましたらお知らせください。可能な限り対応させていただきます。