文字列を前処理しています。私は10k文字列置換の辞書を持っている(例えば、"John Lennon": "john_lennon"
)。他のすべての句読点をスペースで置き換えたいPython Regex:文字列置換のdictにある場合を除いて、アンダースコアとダッシュを削除します。
問題は、これらの文字列の置換にアンダースコアまたはハイフンが含まれているため、単語がこのdictのキーに含まれていない限り、句読点(完全停止を除く)をスペースで置き換えたいとします。私もでそれをやりたかった正規表現はテキストコーパスがかなり大きいのでボトルネックになる可能性があります。
これまでのところ、私が持っている:
import re
input_str = "John Lennon: a musician, artist and activist."
multi_words = dict((re.escape(k), v) for k, v in multi_words.items())
pattern = re.compile("|".join(multi_words.keys()))
output_str = pattern.sub(lambda m: multi_words[re.escape(m.group(0))], input_str)
これは、辞書のキーを使用して、すべての文字列を置換します。今度は同じパスで句読点を削除するだけです。これは、あなたがあなたの辞書内のエントリのように削除したい句読点を扱うことができる"john_lennon a musician artist and activist."
本当に最後のフルストップを残してください。 – tripleee
@トリプルPOは言った、 "私は句読点(完全な停止を除く)を置きたい。私はこれが最後の完全停止にも当てはまると思います。 – Alfe
申し訳ありませんが、文章を区切るには完全な停止が必要です –