Hallo zusammen,
ich bin gerade dabei ein Worthäufigkeitsbestimmungstool für Texte zu erstellen, mir fehlt aber noch eine gute Methode um die Häufigkeit zu bestimmen. Vielleicht weiß ja jemand eine(vlt. regex...) Hier mal das "Umfeld":
Aktuelle Version:
Spoiler anzeigen
#Include <GUIConstants.au3>
#include <array.au3>
#Region GUI
$Form1 = GUICreate("Textworthäufigkeit Analysator 1.0.0", 338, 247, 193, 125)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 321, 209, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_HSCROLL, $WS_VSCROLL))
$MenuDatei = GUICtrlCreateMenu("Datei")
$MenuItem_laden = GUICtrlCreateMenuItem("Text laden...", $MenuDatei)
$MenuItem4 = GUICtrlCreateMenuItem("", $MenuDatei)
$MenuItem_analyse = GUICtrlCreateMenuItem("Analysieren...", $MenuDatei)
$MenuItem5 = GUICtrlCreateMenuItem("", $MenuDatei)
$MenuItem_as = GUICtrlCreateMenuItem("Auswertung speichern", $MenuDatei)
$Quit = GUICtrlCreateMenuItem("Beenden", $MenuDatei)
$MenuInfo = GUICtrlCreateMenu("&Info")
$MenuItemUber = GUICtrlCreateMenuItem("Über...", $MenuInfo)
GUISetState(@SW_SHOW)
#EndRegion GUI
While 1
$msg = GUIGetMsg()
Select
Case $msg = $MenuItem_laden
$pfad = FileOpen(FileOpenDialog("Bitte zu analsysierende Textdatei auswählen:", @MyDocumentsDir, "Textdatei (*.txt)"), 0)
If $pfad <> -1 Then
If MsgBox(64 + 4, "Meldung", "Die Textdatei wurde erfolgreich geladen. Soll zur Analyse fortgeschritten weren?") = 6 Then
If GUICtrlRead($Edit1) <> "" Then
If MsgBox(48 + 4, "Achtung!", "Ihre alte Auswertung wird gelöscht werden! Fortfahren?") = 6 Then Woerteranalyse(FileRead($pfad))
Else
Woerteranalyse(FileRead($pfad))
EndIf
EndIf
Else
MsgBox(32, "Meldung", "Das Laden der Textdatei ist fehlgechlagen")
EndIf
Case $msg = $MenuItemUber
MsgBox(64, "Über...", "Programm Name: Textworthäufigkeit Analysator 1.0.0" & @CRLF & "Programm Version : 1.0.0" & @CRLF & @CRLF & "Autor: Vinschni")
Case $msg = $MenuItem_analyse
Woerteranalyse(FileRead($pfad))
Case $msg = $MenuItem_as
If Not GUICtrlRead($Edit1) = "" Then FileWrite(FileOpenDialog("Datei zum Speichern der Auswertung wählen:", @DesktopCommonDir, "Textdatei (*.txt)"), GUICtrlRead($Edit1))
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Quit
ExitLoop
EndSelect
WEnd
Func Woerteranalyse($text)
Dim $haeufigkeit
Dim $i = 1
$text = StringStripWS($text, 4)
$text = StringStripCR($text)
$wortarray = StringSplit($text, " ")
While $i <= $wortarray[0]
If StringInStr(GUICtrlRead($Edit1), $wortarray[$i]) = 0 Then
$haeufigkeit = _getCountOf($text, $wortarray[$i])
If $haeufigkeit > 1 Then GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & $wortarray[$i] & ": " & $haeufigkeit & @CRLF)
EndIf
$i = $i + 1
WEnd
EndFunc ;==>Woerteranalyse
Func _getCountOf($string, $search)
Local $re = StringRegExp($string, $search, 3)
If @error Then Return 0
Return UBound($re)
EndFunc ;==>_getCountOf
edit: Update
Mit freundlichem Gruß,
Vinschni