5

テキストを文章に分割したい。誰か助けてもらえますか?

略語も処理する必要があります。しかし、私の計画はこれらを早い段階で交換することです。氏->ミスター

import re  
import unittest    

class Sentences:

    def __init__(self,text):
        self.sentences = tuple(re.split("[.!?]\s", text))

class TestSentences(unittest.TestCase):

    def testFullStop(self):
        self.assertEquals(Sentences("X. X.").sentences, ("X.","X."))

    def testQuestion(self):
        self.assertEquals(Sentences("X? X?").sentences, ("X?","X?"))

    def testExclaimation(self):
        self.assertEquals(Sentences("X! X!").sentences, ("X!","X!"))

    def testMixed(self):
        self.assertEquals(Sentences("X! X? X! X.").sentences, ("X!", "X?", "X!", "X."))

ありがとう、バリー

編集:最初に、私は上記に含めた4つのテストを満足させたいと思います。これは、正規表現がどのように機能するかをよりよく理解するのに役立ちます。今のところ、テストで定義されているように、文をXなどとして定義できます。

4

1 に答える 1

5

文の分割は、特にテキストにドット付きの略語が含まれている場合、非常に難しい作業になる可能性があります。既知の略語のリストの使用、またはそれらを認識するためのトレーニング分類器が必要になる場合があります。

NLTK を使用することをお勧めします。NLTK は、自然言語処理用に設計されたオープン ソースの Python モジュールのスイートです。

ここでNLTK を使用した文の分割について読んで、このツールが自分に合っているかどうかを自分で判断してください。

EDITED:またはさらに簡単にこことここにソースコードがあります。これは、NLTK に含まれる The Punkt センテンス トークナイザーです。

于 2011-08-25T10:32:33.737 に答える