-1

3 日前、友人がメモ帳 ++ でいくつかの文を保持し、不要な文を削除するためのコードを教えてくれました。今日、私の先生は、このコードはすべての文で機能するわけではなく、必要なタグのほとんどを消去すると言いました。私を助けて、このコードを修正してください。明日のために私のコーパスを提示することは私にとって重要です.お願いします.

テキスト内の特殊な文字列を見つけて、他の文字列を削除したいと考えています。

たとえば、この文では:

( (IP-MAT (CONJ vnnd)
      (NP-NOM (D das) (N wort))
      (BED war)
      (PP (P bey)
          (CODE [2])
          (NP-DAT (NPR Gott)))
      (. ,))

定期的に保管したい: CONJ D N BED P NPR. このテキストの他の文字列を削除します。

2 番目の例:

( (IP-MAT-SPE (NP-NOM-LFD (D diser) (NPR Jhesus)
 (, ,)
 (CP-REL-SPE (WNP-1 (WPRO wilcher)) (C 0)
 (IP-SUB-SPE (NP-NOM T-1) (PP (P von) (NP-DAT (PRO euch))) (BEPI ist) (RP auff) (VAN genomen) (PP (P gen) 
 (NP-ACC-XXX (NPR hymel)))))) 
 (, ,) 
 (NP-NOM-RSP (D der)) (RDPI wirt) (VB komen)
(PP (P wie) (CP-ADV-SPE (C 0) (IP-SUB-SPE (NP-NOM (PRO yhr)) (NP-ACC-2 (PRO yhn)) (VBN gesehen) (HVPI habt) 
(IP-INF-SPE (NP-ACC-SBJ ICH-2) (PP (P gen)
(NP-ACC-XXX (NPR hymel))) (VB faren)))))
 (. .)) 

そして、私はそれらをこれに変更したい:

D NPR , WPRO C NP-NOM P PRO BEPI RP VAN P NPR , D RDPI VB , P C PRO PRO VBN HVPI NP-ACC-SBJ P NPR VB . –

そのコードは次のとおりです。

(?:(?!\n\n).(?<!\n\n))*?\(([\w,.-]+)\s+[\w,.-]+\)+|(?:(?!\n\n).(?<!\n\n))+$

と置換する:

$1 

[ドル、次に「1」、次にスペース]

ただし、次のような文では機能しません。

 (IP-MAT (CODE [4])
        (CONJ vnd)
      (NP-NOM *con*) 
      (RDD wurden)
      (Q alle) 
      (ADJP (ADJ voll)
        (NP-GEN (D des)
            (ADJ heyligen)
            (NPR geysts)))
      (. ,)) (ID SEPTEMBERTESTAMENT-ACTS,.45))

次のように表示する必要があります: CONJ NP-NOM RDD Q ADJP D ADJ D ADJ NPR 。

または、このコードでは機能しません:

( (IP-MAT (CODE [7])
      (NP-NOM (PRO sie))
      (VBD entsatzten)
      (NP-ACC-RFL (PRO sich))
      (ADVP (ADV aber))
      (Q alle)
      (. ,)
      (IP-MAT (NP-NOM *con*) 
          (VBD verwunderten)
          (NP-ACC-RFL (PRO sich)))
      (IP-MAT (CONJ vnnd)
          (NP-NOM *con*) 
          (VBD sprachen)
          (PP (P+D+ADJ vnternander))
          (, ,)

表示する必要があります: NP-NOM VBD PRO ADV Q . NP-NOM VBD PRO CONJ NP-NOM VBD P+D+ADJ ,

またはこの例について:

 (IP-MAT-SPE (CODE [8]) 
          (CP-QUE-SPE (WADVP (WADV wie))
              (IP-SUB-SPE (VBPI horen)
                      (NP-NOM (PRO wyr)
                          (NP-NOM-PRN *ICH*-1))
                      (ADVP (ADV denn))
                      (, ,)
                      (NP-NOM-PRN-1 (D eyn) (ADJ iglicher))
                      (NP-ACC (PRO$ seyne) (N sprach)
                          (, ,)
                          (CP-REL-SPE (WPP-2 (WADV $dar) (P $ynnen))
                              (C 0) 
                              (IP-SUB-SPE (PP *T*-2)
                                      (CODE {TEXT:darynnen})
                                      (NP-NOM (PRO wyr))
                                      (VAN geporn)
                                      (BEPI sind))))))
          (. ?)) (ID SEPTEMBERTESTAMENT-ACTS,.52))

WADV VBPI PRO NP-NOM-PRN ADV , D ADJ POR$ N , WADV PC PP PRO VAN BEPI .

残念ながら、そのコードは PRO$ または NP-NOM または PP または Q+N などを削除します。

この投稿を編集できないことをお許しください。私のコードがすべての人に表示されることを願っています。そうでない場合は、コーパスのテキスト ファイルをアップロードできます。

4

1 に答える 1

0

さて、前の正規表現を取ります:

(?:(?!\n\n).(?<!\n\n))*?\(([\w,.-]+)\s+[\w,.-]+\)+|(?:(?!\n\n).(?<!\n\n))+$

次のように、使用可能な文字クラスに文字を追加できます。

(?:(?!\n\n).(?<!\n\n))*?\(([\w,.-]+)\s+[\w,.-]+\)+|(?:(?!\n\n).(?<!\n\n))+$
                           ^^^^^^^     ^^^^^^^

2 番目および/または 1 番目を変更して、より多くの文字を含めます。たとえば、を使用[\w,.$-]するPRO$と保持できます。最後のハイフンの前に余分な文字を挿入してください。そうしないと、正規表現が壊れます。

見る:

(?:(?!\n\n).(?<!\n\n))*?\(([$\w,.+-]+)\s+[$\w,.*?-]+\)+|(?:(?!\n\n).(?<!\n\n))+$

いくつかの文字を追加しましたが、規則的ではないと思うものがあるかID、質問で言及していないようなタイプミスをした可能性があります。

前回リンクした正規表現のデモ サイトを覚えていますか? これらのサンプルについては、もう一度参照してください。あなたはそれをいじることができます。置換を行った後、緑色の部分は保持されていますが、青色の部分は削除されていることに注意してください。

于 2013-10-05T19:28:55.323 に答える