Hi, ich habe über längere Zeit sehr viele Inhalte von Online-Zeitungen in einer DEVONthink Datenbank gesammelt, diese aber nie sinnvoll sortieren und gruppieren können.
Nun bin ich auf die Sentimentanalyse gestoßen (de.wikipedia.org/wiki/Sentiment_Detection) und würde diese nun gerne auf die Inhalte dieser Datenbank anwenden um eine Vorsortierung nach Stimmung (Positiv / Negativ) zu erhalten.
Bei meiner Suche bin ich auf den SentimentWortschatz (SentiWS gate.ac.uk/) gestoßen.
Ich glaube damit schon zwei Teile zu haben, die in die richtige Richtung gehen. Habe alle Videos von GATE gesehen, komme aber einfach nicht weiter.
Welche “Application” oder “Resource” muss ich verwenden um den Korpus (= exportierte DEVONthink Datenbank) mit z.B. dem SentimentWortschatz „abzugleichen“?
Ziel ist eine Vorsortierung, damit nicht komplett konträre Standpunkte zu einem Thema in einer Gruppe landen.
Kann mir jemand helfen? Stell ich mir das Verfahren zu einfach vor? Gibt es einen einfacheren Weg?
Sieht auf den ersten Blick alles andere als einfach aus. Vielleicht wäre es einfacher, eine eigene kurze Liste positiver/negativer Wörter zu erstellen und die Dokumente dann mit Hilfe eines Scripts zu sortieren. Hier ist ein einfaches Beispiel, das je nach Häufigkeit unterschiedliche Etiketten oder keines vergibt:
use framework "Foundation"
property positiveStrings : {"like", "yes"}
property negativeStrings : {"dislike", "no"}
tell application id "DNtp"
repeat with theRecord in (the selection as list)
set theText to (plain text of theRecord)
if theText is not "" then
set nPositive to 0
set nNegative to 0
set theText to stringWithString_(theText) of NSString of current application
set theText to lowercaseString() of theText
set theText to theText as string
copy words of theText to theWords
repeat with theWord in theWords
if positiveStrings contains theWord then
set nPositive to nPositive + 1
else if negativeStrings contains theWord then
set nNegative to nNegative + 1
end if
end repeat
if nPositive > nNegative then
set label of theRecord to 1
else if nPositive < nNegative then
set label of theRecord to 2
else
set label of theRecord to 0
end if
end if
end repeat
end tell