Add functions to simply sentiment analyze interviews
This commit is contained in:
parent
2b154d6c22
commit
990c748f8b
1 changed files with 50 additions and 0 deletions
|
@ -1,6 +1,9 @@
|
|||
;; Personal UX database. Goal of this database is to provide funtions and data
|
||||
;; to generate an org file for ux planning.
|
||||
|
||||
(require 'org)
|
||||
(require 'cl-lib)
|
||||
|
||||
(defvar ux:glossary
|
||||
'((context-of-use "The Context of Use is the actual conditions under which a given artifact/software product is used, or will be used in a normal day to day working situation.")))
|
||||
|
||||
|
@ -345,3 +348,50 @@
|
|||
|
||||
(defun ux:sus-calc-score-per-row (lst)
|
||||
(* (apply '+ (ux:sus-calc-score lst)) 2.5))
|
||||
|
||||
;; ======= Analyze Interviews =======
|
||||
|
||||
(defun ux/extract-interview-data ()
|
||||
"Extrahiert Interviewdaten aus dem aktuellen Org-Buffer."
|
||||
(org-element-map (org-element-parse-buffer) 'headline
|
||||
(lambda (headline)
|
||||
(when (string= (org-element-property :TYPE headline) "INTERVIEW")
|
||||
(list :title (org-element-property :TITLE headline)
|
||||
:date (org-element-property :DATE headline)
|
||||
:content (org-element-property :raw-value headline))))))
|
||||
|
||||
(defun ux/analyze-sentiment (text)
|
||||
"Führt eine einfache Stimmungsanalyse durch."
|
||||
(let ((positive-words '("good" "great" "excellent" "love" "enjoy"))
|
||||
(negative-words '("bad" "poor" "terrible" "hate" "dislike")))
|
||||
(- (cl-count-if (lambda (word) (member word positive-words :test #'string-equal))
|
||||
(split-string text))
|
||||
(cl-count-if (lambda (word) (member word negative-words :test #'string-equal))
|
||||
(split-string text)))))
|
||||
|
||||
(defun ux/analyze-interviews ()
|
||||
"Analysiert Interviews im aktuellen Org-Buffer."
|
||||
(interactive)
|
||||
(let ((interviews (ux/extract-interview-data)))
|
||||
(mapcar (lambda (interview)
|
||||
(list :title (plist-get interview :title)
|
||||
:date (plist-get interview :date)
|
||||
:sentiment (ux/analyze-sentiment (plist-get interview :content))))
|
||||
interviews)))
|
||||
|
||||
(defun ux/display-interview-analysis ()
|
||||
"Zeigt die Analyse der Interviews an."
|
||||
(interactive)
|
||||
(let ((result (ux/analyze-interviews)))
|
||||
(with-current-buffer (get-buffer-create "*Interview Analysis*")
|
||||
(erase-buffer)
|
||||
(insert "Interview Analysis:\n\n")
|
||||
(dolist (interview result)
|
||||
(insert (format "Title: %s\nDate: %s\nSentiment: %d\n\n"
|
||||
(plist-get interview :title)
|
||||
(plist-get interview :date)
|
||||
(plist-get interview :sentiment))))
|
||||
(pop-to-buffer (current-buffer)))))
|
||||
|
||||
;; Binden Sie die Funktion an einen Tastaturkürzel, z.B.:
|
||||
;; (global-set-key (kbd "C-c i") 'display-interview-analysis)
|
||||
|
|
Loading…
Add table
Reference in a new issue