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