-
Notifications
You must be signed in to change notification settings - Fork 0
/
VKG4.scm
156 lines (132 loc) · 6.4 KB
/
VKG4.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Paul Koop M.A. GRAMMATIKINDUKTION empirisch ;;
;; gesicherter Verkaufsgespraeche ;;
;; ;;
;; Die Simulation wurde ursprunglich entwickelt, ;;
;; um die Verwendbarkeit von kontextfreien Grammatiken ;;
;; fuer die Algorithmisch Rekursive Sequanzanalyse ;;
;; zu ueberpruefen ;;
;; Modellcharakter hat allein der Quelltext. ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; __|__ ___|__ __|__ __|__ __|__ __|__ ;;
;; | | | | | | | | | | | | ;;
;; KBG->VBGKBBd->VBBdKBA->VBAKAE->VAEKAA->VAAKAV-> VAV ;;
;; ;;
;; Die Produktionen --> sind entsprechend ihrer ;;
;; emp. Auftrittswahrscheinlichkeit gewichtet ;;
;; DIE GRAMMATIK WIRD AUS DEM KORPUS INDUZIERT ;;
;; ein Left-to-the-Right-Modell ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Transformationsmatrix ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;a b c d e f c d e f g h i j g h i j k l ;;
;;0 1 2 3 4 5 2 3 4 5 6 7 8 9 6 7 8 9 10 11;;
;; ;;
;; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ;;
;;0 - 1 ;;
;;1 - 2 ;;
;;2 - - 2 ;;
;;3 - - 2 ;;
;;4 - - - - - 2 ;;
;;5 - 1 2 ;;
;;6 - - - 2 ;;
;;7 - - - 2 ;;
;;8 - - - - - - - - 2 ;;
;;9 - 1 1 ;;
;;10 - - - - - - - - - - - 1 ;;
;;11 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Begruessung := BG ;;
;; Bedarf := Bd ;;
;; Bedarfsargumentation := BA ;;
;; Abschlusseinwaende := AE ;;
;; Verkaufsabschluss := AA ;;
;; Verabscheidung := AV ;;
;; Kunde := vorangestelltes K ;;
;; Verkaeufer := vorangestelltes V ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Korpus
(define korpus (list 'KBG 'VBG 'KBBd 'VBBd 'KBA 'VBA 'KBBd 'VBBd 'KBA 'VBA 'KAE 'VAE 'KAE 'VAE 'KAA 'VAA 'KAV 'VAV));; 0 - 17
;; Korpus durchlaufen
(define (lesen korpus)
;; car ausgeben
(display (car korpus))
;; mit cdr weitermachen
(if(not(null? (cdr korpus)))
(lesen (cdr korpus))
;;(else)
)
)
;; Lexikon
(define lexikon (vector 'KBG 'VBG 'KBBd 'VBBd 'KBA 'VBA 'KAE 'VAE 'KAA 'VAA 'KAV 'VAV)) ;; 0 - 12
;; Index fuer Zeichen ausgeben
(define (izeichen zeichen)
(define wertizeichen 0)
(do ((i 0 (+ i 1)))
( (equal? (vector-ref lexikon i) zeichen))
(set! wertizeichen (+ 1 i))
)
;;index zurueckgeben
wertizeichen
)
;; transformationsmatrix
(define zeile0 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile1 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile2 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile3 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile4 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile5 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile6 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile7 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile8 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile9 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile10 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile11 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile12 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile13 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile14 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile15 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile16 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define zeile17 (vector 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
(define matrix (vector zeile0 zeile1 zeile2 zeile3 zeile4 zeile5 zeile6 zeile7 zeile8 zeile9 zeile10 zeile11 zeile12 zeile13 zeile14 zeile15 zeile16 zeile17))
;; Transformationen zaehlen
;; Korpus durchlaufen
(define (transformationenZaehlen korpus)
;; car zaehlen
(vector-set! (vector-ref matrix (izeichen (car korpus))) (izeichen (car(cdr korpus))) (+ 1 (vector-ref (vector-ref matrix (izeichen (car korpus))) (izeichen (car(cdr korpus))))))
;; mit cdr weitermachen
(if(not(null? (cdr (cdr korpus))))
(transformationenZaehlen (cdr korpus))
;;(else)
)
)
;; Transformation aufaddieren
;; Zeilensummen bilden und Prozentwerte bilden
;; Grammatik
(define grammatik (list '- ))
;; aus matrix regeln bilden und regeln in grammatik einfügene
(define (grammatikerstellen matrix)
(do ((a 0 (+ a 1)))
((= a 12) )(newline)
(do ((b 0 (+ b 1)))
((= b 12))
(if (< 0 (vector-ref (vector-ref matrix a) b) )
(display (cons (vector-ref lexikon a) (cons '-> (vector-ref lexikon b))))
)
)
)
)
;; matrix ausgeben
(define (matrixausgeben matrix)
(do ((a 0 (+ a 1)))
((= a 12) ) (newline)
(do ((b 0 (+ b 1)))
((= b 12))
(display (vector-ref (vector-ref matrix a) b))
)
)
)