Java Regex, фильтр Документ для списка сигнальных слов и стоп-слов - PullRequest
1 голос
/ 22 мая 2019

Я хочу отфильтровать документ по определенным ключевым словам, например:

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+ <- где <code>(\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";

Мне бы ничего не хотелось, или даже удалить целое предложение, следующее за этимиСтоп-слова, такие как «Tel» и «E-Mail», чтобы сделать фильтрацию других ключевых слов более легкой / понятной ...

1 Ответ

1 голос
/ 23 мая 2019

По поводу вашего обновления.Вы можете использовать

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

См. демонстрационную версию regex

Подробности

  • (?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\.) - не- захват группы, совпадающей с любым заданным вами стоп-словом
  • \s* - 0+ пробелов
  • (\S+) - Группа 1: один или несколько непробельных символов.

Java тест :

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
...