スペルチェッカーに入力するために単語を引き出す必要のある実際のテキストのセットがたくさんあります。あまりノイズを出さずに、できるだけ多くの意味のある単語を抽出したいと思います。この辺りには正規表現の忍者がたくさんいることを知っているので、誰かが私を助けてくれることを願っています。
現在、すべてのアルファベット順を。で抽出してい'[a-z]+'
ます。これは大丈夫な概算ですが、それでたくさんのゴミを引きずり出します。
理想的[/-_,.: ]
には、自然な単語の区切り文字(など)で区切られたすべてのアルファベット順を抽出し、境界が不正なアルファベット順を無視する正規表現(きれいで効率的である必要はありません)が必要です。
ただし、数字に隣接していないすべてのアルファベット順のシーケンスを取得できることも嬉しいです。したがって、たとえば、を'pie21'
抽出しません'pie'
が、'http://foo.com'
を抽出し['http', 'foo', 'com']
ます。
lookahead
アサーションを試しlookbehind
ましたが、文字ごとに適用されました(たとえば、何も返さない場合re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21')
は返さ'pi'
れます)。アルファ部分を用語()としてラップしようとしました(?:[a-z]+)
が、役に立ちませんでした。
詳細:データは電子メールデータベースであるため、ほとんどが通常の数字の平易な英語ですが、ときどき、のようなゴミの文字列があり、完全に無視したいと思いますGIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA
。AC7A21C0
数字が含まれているアルファベット順はゴミだと思います。