Java Regex,过滤文档以获取信号词和停用词列表

时间:2019-05-22 12:41:36

标签: java regex keyword prefix

我想为文档过滤特定的关键字,例如:

ausschreibungs id|ausschreibungs-id|ausschreibungsid|ausschreibungsnummer|chiffre nummer|chiffre-nummer|chiffrenr.|chiffre nr.|chiffre-nr.|chiffrenummer|chiffre code|chiffre-code|chiffrecode|chiffre|job-id|job-nr.|job-nr|job id|job nr.|jobnummer|jobnr.|jobid|jobcode|job nr.|ziffer|kennziffer|kennz.|referenz code|referenz-code|referenzcode|ref. nr.|ref. id|ref id|ref.id|ref.-nr.|ref.- nr.|referenz nummer|referenznummer|referenz nr.|referenz-nr.|referenznr.|referenz|referenznummer der stelle|id#|id #|stellenausschreibung nr.|stellenausschreibung nr|stellenausschreibungs nr.|stellenausschreibungs-nr.|stellenausschreibungsnr.|stellenangebots id|stellenangebots-id|stellenangebotsid|stellen id|stellen-id|stellenid|stellenreferenz|stellen-referenz|ref.|st.nr.|stellennumer|st.-nr.|st. nr.|kenn-nr.|positionsnummer|kennwort|stellenkey|stellencode|job-referenzcode|bewerbungskennziffer|projekt id|projekt-id|reference number|reference no.|reference code|job code|job id|job vacancy no.|job-ad-number|auto req id|job ref|kennziffer|

通常,在这些关键字之后,应使用带有小数,特殊字符或字母字符的怪异字符串,例如“ AE_0394-33”或类似字符,它也可以是普通单词等,但通常情况下,十进制数字会非常通常(或至少一次)在该字符串中...

我想根据可能的信号关键字列表之后的所有内容过滤文档(后跟一个空格,然后是一个奇怪的字符串,再跟另一个空格)。我要过滤的匹配字符串通常是整个字符串,中间没有空格。

我还有一个停用词列表,我的想法是删除所有停用词之后的单词或句子,以减少可能匹配项的候选数量,直到出现“。”。来(结束句子)。

这些停用词列表可能是:

der|des|das|die|dem|den|ein|eine|diese|diese|dieser|es|sie|wir|unser|ihr|dein|nr|und|hier|oder|wie|an|angeben|mitteilen|id|nicht|einsatzort|bereit|vorzugsweise|ausschließlich|nummer|hiermit|für|auf|was|code|nr.|#||bzw.|via|von|zu|Anzahl|zum|zur|bis|ab|gerne||job|+49|tel|telefon|fax|plz|hausnr.|hausnummer|email|e-mail|veröffentlichung|veroeffentlichung|

我在制定正则表达式时遇到了一个问题,要考虑到关键字后面的单词,否则要过滤掉那些停用词之后的单词或句子...

我正在考虑前缀停用词或关键字的列表,然后我在关键字之后采用一个单词边界,或者采用一堆单词直到小数点“”。出现...

我在这里尝试正则表达式: https://regex101.com/r/peHT1v/1

是关键字,但是我不知道如何将这些单词标记为交替单个单词的前缀列表,然后是另一个单词?

例如: [list, of , keywords] *whitespace* \s+(.*)\s+ <-其中(\s+.*\s+)是我的单词边界捕获组匹配字符串,甚至是整个句子,直到“。”跟随

我再举一个例子:

Referenznummer: INDUSTRY Kontakt: ZAsdfsdfS Herr Andrafgdh Neue Str. 7 21244 Buchholz +42341 22322 mdjob.bu44lz@zaqusssis.de Stellenanzeige teilen: Jetzt online bewerben! oder bewerben Sie sich mit

我想拥有INDUSTRY,因为其后跟关键字“ Referenznummer”

"Geben Sie bei Ihrer Bewerbung die Stellenreferenz und die Stellenbezeichnung an!\n" + 
"Stellenreferenz:   21533448-JOtest\n" + 

我想要21533448-JOtest,因为它后跟一些关键字“ Stellenreferenz”

Stellenausschreibung Nr. PD-666/19

我想要PD-666/19

Parkwe 103 33 /  sss968 Kasn 
            "FFFF\r\n" 
            "E-Mail: Test.Ticfffsssis-Jsdf741@drbsdfil.deeddilProtedddctor.adasdilto(\"ep_5b0224b6\", 1); 
            "Tel: (33 21) 23 42 117-3 \r\n" + 

            "Jetzt bewerben
            "  2018-12-04 nicht-medsdfs asfal";

我什么也不想,甚至删除了那些停用词(例如“电话”和“电子邮件”)之后的整个句子,以使其他关键字的过滤更加容易/清晰...

1 个答案:

答案 0 :(得分:1)

关于您的更新。您可以使用

(?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\.)\s*(\S+)

请参见regex demo

详细信息

  • (?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\.)-与您定义的停用词匹配的非捕获组
  • \s*-超过0个空格
  • (\S+)-第1组:一个或多个非空白字符。

Java test

String s = "Referenznummer: INDUSTRY Kontakt: ZAsdfsdfS Herr Andrafgdh Neue Str. 7 21244 Buchholz +42341 22322 mdjob.bu44lz@zaqusssis.de Stellenanzeige teilen: Jetzt online bewerben! oder bewerben Sie sich mit\n" +
                "Geben Sie bei Ihrer Bewerbung die Stellenreferenz und die Stellenbezeichnung an! \n" +
                "Stellenreferenz:   21533448-JOtest\n\n" +
                "Stellenausschreibung Nr. PD-666/19";
Pattern pattern = Pattern.compile("(?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\\.)\\s*(\\S+)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group(1)); 
} 

输出:

INDUSTRY
21533448-JOtest
PD-666/19