pythonにおけるNAND論理積を使用した自然言語抽出についての質問です。
やりたいこと
・reモジュールを使用した文字抽出。
・文に含まれる単語のうち、指定した単語が欠損している場合のみ抽出。
・\\\\で区切られた文それぞれに対してマッチするか判定。
やったこと
・他サイトを参考に下記のコードを実行しましたが、思うような挙動をしません。
python
1import re 2 3# マッチしてほしくない「せいきひょうげんにおける」「正規表現における\nNAND論理積マッチング」 4# マッチしてほしい「正規表現における\n論理積マッチング」「正規表現\nマッチング」 5s = "\\\\せいきひょうげんにおける\\\\正規表現における\nNAND論理積マッチング\\\\正規表現における\n論理積マッチング\\\\正規表現\nマッチング\\\\" 6 7target = ((?!.*正規表現)|(?!.*NAND)|(?!.*論理積)|(?!.*マッチング)) 8re.findall(target, s)
参考にしたサイト
https://faq.say-tech.co.jp/bom-for-windows-ver-7-0/p260
3.否定論理積(NAND)
否定論理積は、指定した複数の文字列について、全てが見つかった時には検知しません。(指定した文字列のう>ち、いずれかを含まなければ検知します)キーワードとして「文字列1」、「文字列2」、「文字列3」を指定する場合、以下のように記述します。
^(((?!.*文字列1)|(?!.*文字列2)|(?!.文字列3))).$
その際、以下のテキストは検知されます。
テキスト内に文字列1と文字列2と文字列4が記載されたメッセージ
以下のテキストは検知されません。
テキスト内に文字列1と文字列2と文字列3が記載されたメッセージ
なお、「|(?!.*文字列)」を増やすことで、よりメッセージを絞り込むことができます。
^(((?!.*文字列1)|(?!.*文字列2)|(?!.*文字列3)|(?!.文字列4))).$
python
1例) 2単語「正規表現」「NAND」「論理積」「マッチング」のうち、1つ以上を含み、 3なおかつ欠損がある場合にマッチ。 4 5\\\\ 6# マッチしない例1 7# 対象の単語を1つ以上含んでいない 8せいきひょうげんにおける 9\\\\ 10# マッチしない例2 11# 対象の単語をすべて含む 12正規表現における\nNAND論理積マッチング 13\\\\ 14# マッチする例1 15# 対象の単語を1つ以上含んで欠損がある 16正規表現における\n論理積マッチング 17\\\\ 18# マッチする例2 19# 対象の単語を1つ以上含んで欠損がある 20正規表現\nマッチング 21\\\\
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー