vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Häuftigkeitsanalyse von Texten 
Autor: Hausen.B
Datum: 29.11.12 13:01

Hey ihr

ich habe ein Problem und hoffe, dass ihr mir helfen könnt!
ich muss für mein Programm einen recht großen String in Teilstrings zerlegen die jeweils eine Zeichenlänge von 3, 4 oder 5 Zeichen enthalten.

Beispiel:

Ich brauche Hilfe

zerlegt in:

Ich; chb; hbr; bra: rau; auc; uch; che; heh; ehi; hil; ilf; lfe

Leerzeichen sollen nicht beachtet werden.

Ich will danach diese miteinander vergleichen können um Gleiche Wortpaar zu ermitteln.
(Ist für eine Häufigkeitsanalyse gedacht, die ich für die Entschlüsselung von Texten brauche!)

Ich wäre euch für alle Tips sehr dankbar!!!
Liebe Grüße
Hausen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Zardoz
Datum: 29.11.12 13:10

Hallo Hausen,
welche VB-Version? Liegt das Problem
beim Zerlegen des Strings?

Gruss,

Zardoz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Hausen.B
Datum: 29.11.12 14:02

Hey Zardoz,

ich nutze VBA über Excel in der 2010 Version!
Beim Zerlegen in diese Gruppen und beim Vergleichen...
Daran hapert es jetzt gerade, aber ich glaube das es grundsätzlich irgendwie alles ziemlich schwierig ist was wir uns überlegt haben!

Liebe Grüße
Hausen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Zardoz
Datum: 29.11.12 14:46

Hallo Hausen,
probier' mal dies:
  Dim Txt$, i&, E$, Z1&, Z2&, Liste$()
 
  Txt = "Dein Text"
  ReDim Liste(Len(Txt) / 4)
  Z1 = 0: Z2 = 0
  For i = 1 To Len(Txt)
    E = Mid$(Txt, i, 1)
    If E <> " " Then
      Liste(Z1) = Liste(Z1) & E
      Z2 = Z2 + 1
      If Z2 = 4 Then
        Z2 = 0
        Z1 = Z1 + 1
      End If
    End If
  Next i
  ReDim Preserve Liste(Z1 - 1 + Sgn(Z2))
  For i = 0 To UBound(Liste)
    MsgBox Liste(i)
  Next i

Gruss,

Zardoz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Manfred X
Datum: 29.11.12 18:26

Hallo!

Das Net-Framework stellt für solche Zwecke geeignete Methoden zur
Verfügung (VB 2010).
Erkläre mal genauer was Du machen willst (Wortpaare?).

Hier eine kleines Beispiel für die Nutzung einer Dictionary
zur Häufigkeitsermittlung von Zeichenfolgen.

   Dim text As String = _
      "Ich; chb; hbr; bra: rau; auc; uch; che; heh; ehi; hil; ilf; lfe"
 
   'Aufspalten am Strichpunkt
   Dim parts() As String = text.Split(";"c)
 
   Dim freq As New Dictionary(Of String, Integer)
 
   For i As Integer = 0 To parts.Length - 1
       parts(i) = parts(i).Trim 'Leerzeichen Anfang/Ende entfernen
       If freq.ContainsKey(parts(i)) Then
          'Element bereits vorhanden: zählen
          freq(parts(i)) += 1
       Else
          'Element hinzufügen
          freq.Add(parts(i), 1)
       End If
   Next i


Beitrag wurde zuletzt am 29.11.12 um 18:28:34 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Hausen.B
Datum: 05.12.12 10:29

hey Zardoz

Vielen Dank das funktioniert schonmal!
Er zeigt mir die jetzt in ein einem extra worksheet an!

Vielen Dank!
Hausen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Hausen.B
Datum: 05.12.12 10:50

Hey Manfred,

Also ich möchte die Wortpaar miteinander vergleichen und Mehrfache suchen, die dann in einer Extra Spalte angezeigt werden.
Die Mehrfachen muss ich dann wieder im Text suchen und den Abstand zwischen den Wortpaaren bestimmen...
Hast du da eine Idee wie das funktionieren könnte?

Gruß Hausen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Zardoz
Datum: 05.12.12 20:05

Hallo Hausen,
probier' mal dieses:
  Dim i&, j&, Z1&, u&, Doppelt$(), flgFound() As Boolean
 
  u = UBound(Liste)
  ReDim Doppelt(u), flgFound(u)
  Z1 = -1
  For i = 0 To u - 1
    If flgFound(i) = False Then
      For j = i + 1 To u
        If flgFound(j) = False Then
          If Liste(i) = Liste(j) Then
            flgFound(i) = True
            flgFound(j) = True
          End If
        End If
      Next j
      If flgFound(i) = True Then
        Z1 = Z1 + 1
        Doppelt(Z1) = Liste(i)
      End If
    End If
  Next i
  Erase flgFound
  If Z1 >= 0 Then
    ReDim Preserve Doppelt(Z1)
    MsgBox "Doppelt:" & vbCr & Join(Doppelt, vbCr)
  Else
    MsgBox "Nichts gefunden."
  End If

Gruss,

Zardoz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Häuftigkeitsanalyse von Texten 
Autor: Hausen.B
Datum: 13.12.12 23:24

Hey Zardoz,
ich habe das versucht aber irgendwie funktioniert das nicht... und ich verstehe auch nicht richtig was du da geschrieben hast...
Ich bin jetzt auf dem Stand, dass ich die Wortpaare finde und in Spalten anzeigen lassen kann. Jetzt müsste ich Mehrfache suchen und von diesen dann den Abstand bekommen, der dann wiederrum in seine Primfaktoren zerlegt werden soll!
Wäre echt lieb wenn du mir das von oben nochmal erklären würdest!

Grüße
Hausen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel