3

その文に特定の単語が存在する場合、正確な文を抽出したいと思います。誰かがPythonでそれを行う方法を教えてもらえますか. 私は concordance() を使用しましたが、単語が一致する行のみを出力します。

4

3 に答える 3

4

簡単に思い出してください。文の区切りは実際にはかなり複雑なことです。「Mr。」などの期間ルールには例外があります。または「博士」句読点を終了するさまざまな文もあります。ただし、例外には例外もあります(たとえば、次の単語が大文字で、適切な名詞でない場合、Dr。は文を終了できます)。

これに興味がある場合(これは自然言語処理のトピックです)
、自然言語ツールキット(nltk)のpunktモジュールを確認できます。

于 2010-10-26T22:05:42.567 に答える
1

文字列に各文がある場合は、単語にfind()を使用でき、見つかった場合は文を返します。それ以外の場合は、このような正規表現を使用できます

pattern = "\.?(?P<sentence>.*?good.*?)\."
match = re.search(pattern, yourwholetext)
if match != None:
    sentence = match.group("sentence")

私はこれをテストしていませんが、それらの線に沿った何かをテストしました。

私のテスト:

import re
text = "muffins are good, cookies are bad. sauce is awesome, veggies too. fmooo mfasss, fdssaaaa."
pattern = "\.?(?P<sentence>.*?good.*?)\."
match = re.search(pattern, text)
if match != None:
    print match.group("sentence")
于 2010-10-23T00:20:29.930 に答える
0

ダットはこれにうまく答えました。いくつか追加したかっただけです

import re

text = "go directly to jail. do not cross go. do not collect $200."
pattern = "\.(?P<sentence>.*?(go).*?)\."
match = re.search(pattern, text)
if match != None:
    sentence = match.group("sentence")

明らかに、始める前に正規表現ライブラリをインポートする (インポートする) 必要があります。これは、正規表現が実際に行うことの分解です (詳細については、Python re ライブラリ ページを参照してください) 。

\. # looks for a period preceding sentence.
(?P<sentence>...) # sets the regex captured to variable "sentence".
.*? # selects all text (non-greedy) until the word "go".

繰り返しになりますが、ライブラリ参照ページへのリンクが重要です。

于 2010-10-23T01:06:17.697 に答える