Ich versuche, allgemeine Wörter (Konjunktionen, Adverbien, Pronomen, usw.) von einem Block des Textes zu entfernen. Ich verwende eine Regex, aber aus irgendeinem Grund werden einige der gebräuchlichen Wörter in meinem Filter nicht herausgefiltert.RegEx Filter für allgemeine Wörter
Einige Beispiele von Wörtern nicht gefiltert werden: "havent", "Warum", "sollte"
Irgendwelche Ideen, warum?
splitResult = s.split()
p = re.compile(
"""^(&|also|a|about|again|all|after|are(nt)?|arent|as|an(y)?|at|
bcuz|before|be(low)?|between|bring|but|by|and|can(not)?|close(d)?|could(nt)?|
cuz|do(nt)?|down|decide(d)?|decision|on(to)?|or|of|our|over|out|have(nt)?|he(re)?|
her|his|other(s)?|even|got(ten)?|for|from|get(s)?|got(ten)?|has(nt)?|havent|he(s)?|
him|his|if|in|to|in(to)?|is(nt)?||make|me|once|play(ed)?|role|say(s)?|seen|she(s)?|
should(nt)?|stop(ped)?|time|my|no(t)?|must(nt)?|now|you(re)?|your|want|want(ed)?|
watch(ed)?|way|we(re)?|will|with||i|a|is(nt)?|just|would(nt)?|before|that|the(re)?|
their|them|they|this|turn|when|at|how|it(s)?|which|who|after|then|if|how|because|know(s)?|
yet|[A-Za-z]{1,2}|http(s)?://.*|www\..*)$""",re.I)
for word in splitResult:
m = p.findall(word)
if not m:
word = "".join(c for c in word if c not in ("?", ".", "!", '"', ",","'","(",")"))
wordsList.insert(ctr,word)
Ich denke, das eine geeignetere Job für Maschinelle Sprachverarbeitung, siehe zum Beispiel: http://stackoverflow.com/questions/9953619/technique-to-remove-common-words-and-their-plural-versions-from-a-string. – alecxe
Ich habe dies in [Regex101] (https://regex101.com/r/wR0dJ2/1), und Sie können den Fehler im Abschnitt * Erklärung * sehen (obwohl es nicht hervorhebt). Im Grunde hast du "is (nt)? || make", was "is (nt)? || make" und "with || i" sein soll, was "mit | i" sein soll. Beide hatten 2 '||' anstelle von 1. Dies löst das Problem nicht, aber ich würde vorschlagen, dass Sie Ihre RegEx aktualisieren – Druzion
Ich konnte kein Problem finden, ich habe gerade Capturing-Gruppen auf Nicht-Capturing für eine sauberere Ausgabe gedreht: siehe [ Demo] (http://ideone.com/mnC7nr). Beachten Sie, dass Sie dieses Muster stärker kontrahieren können, um es effizienter zu gestalten, indem Sie Keywords mit gemeinsamen Endungen gruppieren. –