NLTagger spinnt

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NLTagger spinnt

    Hallo zusammen,

    es passt eigentlich in gar kein Forum so richtig rein aber ich versuche es mal hier. Für meine Uni muss ich ein paar Sätze identifizieren und dann im Anschluss daran verschiedenes anstellen. Die Bibliothek, die meine Uni normalerweise für das Tagging nutzt ist ziemlich Buggy. Da habe ich mir gedacht: Ja warum nicht einfach das von Apple nehmen. Da hab ich vor ein paar Jahren gute Erfahrungen damit gemacht.

    Aus diesem Grund hab ich schnell in einem Swift Playgorund den NLTagger genommen und ausgeführt. Folgender Code funktioniert auch recht gut (ein wenig gekürzt):

    Quellcode

    1. let languageTaggerTags: [NLTag] = [.noun]
    2. var singleFileContent = "Bietet Volkswagen ein Hybridfahrzeug an?"
    3. let tagger = NLTagger(tagSchemes: [.lexicalClass])
    4. let options: NLTagger.Options = [.omitWhitespace, .joinNames, .joinContractions]
    5. var cleanWords = "";
    6. let range = singleFileContent.startIndex ..< singleFileContent.endIndex
    7. tagger.string = singleFileContent
    8. tagger.setLanguage(.german, range: range)
    9. tagger.enumerateTags(in: range, unit: .word, scheme: .lexicalClass, options: options) { (tag, range) -> Bool in
    10. if let tag = tag {
    11. if languageTaggerTags.contains(tag) {
    12. cleanWords += "\(singleFileContent[range])"
    13. cleanWords += ","
    14. }
    15. if tag == .punctuation || tag == .otherPunctuation {
    16. cleanWords += "\n"
    17. }
    18. }
    19. return true
    20. }
    Alles anzeigen
    Problem ist nun aber, dass er manchmal falsch klassifiziert und somit das Ergebnis verfälscht wird :(

    Beispiele hierfür sind:
    Frage: Bietet Volkswagen ein Hybridfahrzeug an? --> angebliche Substantive: Bietet, Volkswagen, Hybridfahrzeug
    Frage: Dürfen Motorenöle gemischt werden? --> angebliche Substantive: Dürfen, Motorenöle

    Ich würde mich jetzt nicht als der neue Goethe bezeichnen, aber das "Bietet" und "Dürfen" kein Substantiv ist bin ich mir sehr sicher.

    Wie kann ich das denn verhindern? Was ich schon probiert habe, einfach mal den kompletten Text kleinzuschreiben. Problem hier aber: Er findet nur noch sehr sehr wenig. Es kann doch nicht sein, dass er einfach anhand der Großschreibung geht? Das wäre ja ein schlechter Scherz. Vor allem, da das Natural Language Tagger heißt. Sowas könnte ja jeder Schüler.

    Habt ihr da irgendwelche Ideen, was ich noch probieren könnte?

    Vielen Dank im voraus!
    Viele Grüße
    Nils