Sentimentanalyse - Datenbank nach Stimmung sortieren?

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?

Bin für jede Hilfe dankbar.

pete

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