Node.js Satzanalyse?

1 Antwort

Einen festen Satz? Oder kann es ein zufälliger Satz sein?

Text-Analyse ist extrem schwer richtig zu programmieren...

Ich habe dazu mal ChatGPT befragt, dies hat folgendes ergeben. Habe es allerdings nicht selbst getestet.

const nltk = require('nltk');

// Beispiel-Satz
const sentence = "Der schnelle braune Fuchs springt über den faulen Hund.";

// Part-of-Speech-Tagging durchführen
const taggedSentence = nltk.posTag(nltk.wordTokenize(sentence));

// Satzstruktur extrahieren
const sentenceTree = nltk.parse(taggedSentence);

// Grammatikalische Informationen extrahieren
const tense = getTense(taggedSentence);
const subject = getSubject(sentenceTree);
const predicate = getPredicate(sentenceTree);
const objects = getObjects(sentenceTree);

// Ergebnis ausgeben
console.log("Satz: " + sentence);
console.log("Tempus: " + tense);
console.log("Subjekt: " + subject);
console.log("Prädikat: " + predicate);
console.log("Objekte: " + objects.join(", "));

// Hilfsfunktionen

// Ermittelt das Tempus des Satzes
function getTense(taggedSentence) {
  for (let i = 0; i < taggedSentence.length; i++) {
    const tag = taggedSentence[i][1];
    if (tag === "VBP" || tag === "VBZ") {
      return "Präsens";
    } else if (tag === "VBD") {
      return "Simple Past";
    } else if (tag === "VBN") {
      return "Past Participle";
    } else if (tag === "VBG") {
      return "Present Participle";
    }
  }
  return "";
}

// Ermittelt das Subjekt des Satzes
function getSubject(sentenceTree) {
  const subjectNode = sentenceTree.subtrees().find(subtree => subtree.label() === "NP");
  if (subjectNode) {
    return subjectNode.leaves().join(" ");
  }
  return "";
}

// Ermittelt das Prädikat des Satzes
function getPredicate(sentenceTree) {
  const predicateNode = sentenceTree.subtrees().find(subtree => subtree.label() === "VP");
  if (predicateNode) {
    return predicateNode.leaves().join(" ");
  }
  return "";
}

// Ermittelt die Objekte des Satzes
function getObjects(sentenceTree) {
  const objects = [];
  const objectNodes = sentenceTree.subtrees().filter(subtree => subtree.label() === "NP");
  for (let i = 0; i < objectNodes.length; i++) {
    objects.push(objectNodes[i].leaves().join(" "));
  }
  return objects;
}


Woher ich das weiß:Berufserfahrung – Ich bin Entwickler.