Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Constantin
Anmeldungsdatum: 31.08.2007 Beiträge: 36
|
Verfasst am: 13.11.2007, 17:51 Titel: Sätze in Wörter zerlegen? |
|
|
Hi.
Kennt jemand einen Algorithmus mit dem man Sätze wie zum Beispiel
"Hallo wie gehts?"
in
"Hallo", "wie" und "gehts" zerlegen kann?
Ich hab viel ausprobiert, aber ich habs nicht geschafft.
mfg
Consti |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 18:04 Titel: |
|
|
So gehts auch:
Code: | Function InitMenu(FirstLetterX As Integer, FirstLetterY As Integer, ByRef MenuWin As Win) As Integer
Dim I As Integer
Dim MaxItemLength As Integer
Dim ItemCounter As Integer = 1
For I = 0 To Len(MenuWin.Text)
If Mid(MenuWin.Text, I, 1) = " " Then 'Zählen der Menüpunkte
ItemCounter = ItemCounter + 1
EndIf
Next I
Dim Items(ItemCounter)As String
Dim Letter As String
MenuWin.YLength = ItemCounter + 1 'MenüHÖHE
'*************************************************************
ItemCounter = 0
I = 0
For I = 1 To Len(MenuWin.Text)
Letter = Mid(MenuWin.Text, I, 1)
If Letter = " " Then
ItemCounter = ItemCounter + 1
Elseif Mid(MenuWin.Text, I, 1) <> " " then
Items(ItemCounter) = Items(ItemCounter) + Letter 'Aufteilen des PoPups in verschiedene Items
EndIf
Next I |
Items sind in dem Fall Menüpunkte, die zusammen in einem String gespeichert wurden. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Constantin
Anmeldungsdatum: 31.08.2007 Beiträge: 36
|
Verfasst am: 13.11.2007, 20:55 Titel: |
|
|
danke!! |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 14.11.2007, 10:29 Titel: |
|
|
Das past aber nur zur hälfte.
Man kann die Sätze anhand der Leerzeichen Spliten, aber dann hat das letzte wörtchen (wenn der satz mit solchem endet), immernoch ein Satzzeichen. Gleiches Problem, bei Kommas, und Semikolons, die ohne leerzeichen getrent von 2 wörtern liegen.
JimJim
XUN _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 14.11.2007, 10:50 Titel: |
|
|
Man nennt das tokenizing: Zerlege einen String in Tokens. Die Frage ist, nach welchen Regeln das geschieht. Die einfachste Regel ist: Tokens sind durch Separator-Zeichen getrennt. Ein einfaches Tokenizing sieht dann so aus:
Code: |
Sub tokenize(s1 As String, token() As String, n As Integer, seperator() as String, nseperator as String)
's1: Input string to be tokenized
'token(): Output: tokens as Array of String
'n: Number of tokens found
'seperator(): All seperators (only first char is relevant)
'nseperator: Number of seperators to be dealed with
Dim As Integer, slen, k, j, i, i1
dim sepfound as boolean
slen = Len(s1)
k = 0
j = 1
For i = 1 To slen
sepfound=False
For i1=0 to nseperator-1
If (Mid$(s1, i, 1) = Mid$(seperator, i1, 1)) Then sepfound=True
next i1
If (sepfound) Then
token(k) = Mid$(s1, j, i - j)
k = k + 1
j = i + 1
End If
'Last token:
If (i = slen and not sepfound) Then
token(k) = Mid$(s1, j, slen)
k = k + 1
j = i + 1
End If
Next i
n = k
End Sub
|
(Habe den Code ohne zu testen auf mehrere Seperatoren erweitert, daher kann er noch einen Fehler haben.)
Viele Grüsse!
Croco |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 14.11.2007, 12:31 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | Das past aber nur zur hälfte.
Man kann die Sätze anhand der Leerzeichen Spliten, aber dann hat das letzte wörtchen (wenn der satz mit solchem endet), immernoch ein Satzzeichen. Gleiches Problem, bei Kommas, und Semikolons, die ohne leerzeichen getrent von 2 wörtern liegen.
JimJim
XUN |
Du kannst doch selbst festlegen, an welchen Zeichen das Programm das Wortende erkennt. Grundsätzlich (in normaler Büro-EDV) sollte nach jedem Wort oder jedem Satzzeichen eine Leerstelle folgen. Dann wird das Satzzeichen (wenn benötigt) einfach als Buchstabe des vorhergehenden Wortes mitgelesen. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 14.11.2007, 13:03 Titel: |
|
|
Mir brauchst du das nicht erklären .. ich hab schon passende Parser für meine KI geschrieben ... der Post sollte nur auf diese Problematik aufmerksam machen und gleichzeitig aufzeign, das es mit einer normalen Split nicht richtig funzt.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|