PHP-Quelltext |
|
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 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
;Scriptname: "Vokabelgenerator"
;Version: 1.0 vom 16.03.'14
;Autor: EDV-Dompteur, Stefan Denk
;Web: http://www.EDV-Dompteur.de
;Copyright: Nix Copyright, nehmt es hin und freut Euch! :-)
;
;Programmbeschreibung:
;=====================
;Script zur Verwendung mit AutoIt: https://www.autoitscript.com/site/
;
;Dieses Script dient dem Sprachenlernen, bzw. der Textanalyse.
;Es wandelt eine Textdatei mit dem Namen "Text_in" (die auch im Unicode-Format vorliegen darf) und die
;sich zwingend im selben Verzeichnis befinden muss, wie das Script, in drei verschiedene Ausgabedateien um:
;
; 1) Eine Liste aller Wörter des Textes, in Ursprungsreihenfolge (je Wort eine Zeile).
; Der Text bleibt dadurch lesbar und man hat im Ausdruck rechts viel Platz für Notizen.
;
; 2) Vokabelliste, alphabetisch sortiert, mit Angabe Worthäufigkeit.
; Hier stehen Beugungen untereinander (mein, meine, meiner, meines ...).
;
; 3) Vokabelliste, nach Worthäufigkeit sortiert (häufigste Vokabeln oben).
; Durch Beugung variierende Vokabeln erscheinen "wild" in der Liste verstreut, entsprechend ihrer Häufigkeit.
; Aber man sieht auf einen Blick, welche Vokabeln am dringendsten gelernt werden sollten.
;
;Das Script unterscheidet nach Groß-/Kleinschreibung.
;Wenn also "Fliegen fliegen", oder etwas "auf dem Weg weg kommt", so sind das unterschiedliche Vokabeln.
;Komplett in Großschrift geschriebene Wörter werden ebenfalls getrennt gelistet, weil das Script nicht wissen kann,
;ob mit "FLIEGEN" nun die Insekten, die Tätigkeit des fliegens gemeint ist.
;
;Die vom Script erzeugten Dateien sind z. B. in Notepad, Wordpad, oder Excel ladbar.
;Dateiformat: Je Wort/Vokabel eine Zeile (getrennt durch CRLF). Häufigkeitsangabe durch Tab getrennt, also CHR(9).
;
;Anleitung:
;========
;Um die vom Script einzulesende Textdatei zu erzeugen (z. B. mit Inhalt aus einer russischen Website), eignet
;sich der in windows enthaltene Editor "Notepad" (Start, ausführen, "Notepad" eingeben, Enter). Dann:
;- Russischen Text ins Clipboard kopieren.
;- Clipboard in Notepad einfügen.
;- Datei speichern unter ... "Text_in.txt" (bei "Codierung" bitte "Unicode" auswählen).
;- Wenn sich obige Datei und das Script im selben Verzeichnis befinden, dann das Script starten und freuen! :-)
#include <file.au3>
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
Local $Datei
Local $Datei1 = @ScriptDir & "\Text_in.txt" ;Die einzulesende Datei
Local $Datei2 = @ScriptDir & "\Text_out - Wortliste in Ursprungsreihenfolge.txt"
Local $Datei3 = @ScriptDir & "\Text_out - Vokabelliste, sortiert nach Alphabet.txt"
Local $Datei4 = @ScriptDir & "\Text_out - Vokabelliste, sortiert nach Häufigkeit.txt"
Local $Arbeitsarray ;Das Array für die einzulesenden Daten
Local $Vokabelvorkommen
Local $Infostring
#Region ;---Quelldatei in String einlesen und wieder schließen--------------------------------------\
$Datei=$Datei1
Local $Dateihandle = FileOpen($Datei, $FO_READ) ;Datei öffnen.
If $Dateihandle = -1 Then
MsgBox(4096, "Fehlercode: " & @error, "Fehler beim Einlesen der Datei:" & @CRLF & $Datei)
Exit
EndIf
Local $sFileRead = FileRead($Dateihandle) ;Datei in String einlesen.
FileClose($Dateihandle) ;Datei schließen.
#Endregion ;Quelldatei in String einlesen und wieder schließen--------------------------------------/
#Region ;---Ersetzungen im Arbeitsstring, der die komplette, eingelesene Datei enthält--------------\
;---Unerwünschte Zeichen durch Zeilenumbruch ersetzen:
Dim $Arbeitsstring = StringRegExpReplace($sFileRead, "[.,;:!?*""~©‹|«»…()$№ 1234567890]", @CRLF)
do ;Mehrfache Zeilenumbrüche entfernen.
$Arbeitsstring = StringReplace($Arbeitsstring, @CRLF & @CRLF, @CRLF)
until @extended=0
#EndRegion ;Ersetzungen im Arbeitsstring, der die komplette, eingelesene Datei enthält--------------/
#Region ;---Datei2 schreiben (jedes Wort steht dort in einer eigenen Zeile)-------------------------\
$Datei=$Datei2
Local $Dateihandle = FileOpen($Datei, 34) ;Datei zum Schreiben öffnen/erzeugen.
If $Dateihandle = -1 Then
MsgBox(4096, "Fehlercode: " & @error, "Fehler beim Schreiben der Datei:" & @CRLF & $Datei)
Exit
EndIf
FileWrite($Dateihandle, $Arbeitsstring) ;Arbeitsstring in Datei schreiben.
FileClose($Dateihandle) ;Datei schließen (bei Unicode mittels Dateihandle).
#EndRegion ;Datei2 schreiben (jedes Wort steht dort in einer eigenen Zeile)-------------------------/
#Region ;---Datei2 nun in ein eindimensionales Array einlesen---------------------------------------\
$Datei=$Datei2
If Not _FileReadToArray($Datei, $Arbeitsarray, 1) Then
MsgBox(4096, "Fehler!", "Fehler beim Einlesen der Datei:" & @CRLF & $Datei)
Exit
EndIf
#Endregion ;Datei2 nun in ein eindimensionales Array einlesen---------------------------------------/
_ArraySort($Arbeitsarray, 0, 1) ;Die Wortliste alphabetisch sortieren.
#Region ;---Datei3 schreiben (alphabetisch sortierte Vokebelliste, mit Worthäufigkeit)--------------\
$Datei=$Datei3
Local $Dateihandle = FileOpen($Datei, 34) ;Datei zum Schreiben öffnen/erzeugen.
If $Dateihandle = -1 Then
MsgBox(4096, "Fehlercode: " & @error, "Fehler beim Schreiben der Datei:" & @CRLF & $Datei)
Exit
EndIf
;---Array in Datei schreiben, unter Verwendung des Dateihandles $Dateihandle----\
;---Array schreiben (letzter Eintrag fehlt)------------------\
$Vokabelvorkommen=1
For $i = 2 To $Arbeitsarray[0]
if $Arbeitsarray[$i]=$Arbeitsarray[$i-1] then ;Wenn identische Vokabel ...
$Vokabelvorkommen=$Vokabelvorkommen+1 ;... dann deren Zähler erhöhen.
else ;Wenn aber neue Vokabel, dann ...
$Vokabelvorkommen=StringFormat("%6s", $Vokabelvorkommen) ;... letzen Zählerstand rechtsbündig formatieren ...
FileWrite($Dateihandle, $Vokabelvorkommen & Chr(9)) ;... und den rechtsbündigen Zählerstand + Tabulator ...
_FileWriteFromArray($Dateihandle, $Arbeitsarray, $i-1, $i-1) ;... gefolgt von zugehöriger Vokabel schreiben.
$Vokabelvorkommen=1 ;Für die nächste Vokabel den Zähler wieder auf Eins setzen.
Endif
Next
;---Array schreiben (letzter Eintrag fehlt)------------------/
;---Den noch fehlenden, letzten Arrayeintrag schreiben:------\
$Vokabelvorkommen=StringFormat("%6s", $Vokabelvorkommen) ;letzen Zählerstand rechtsbündig formatieren ...
FileWrite($Dateihandle, $Vokabelvorkommen & Chr(9)) ;... und den letzten Zählerstand + Tabulator ...
_FileWriteFromArray($Dateihandle, $Arbeitsarray, $i-1, $i-1) ;... gefolgt von zugehöriger Vokabel schreiben.
;---Den noch fehlenden, letzten Arrayeintrag schreiben:------/
;---Array in Datei schreiben, unter Verwendung des Dateihandles $Dateihandle----/
FileClose($Dateihandle) ;Datei schließen (bei Unicode mittels Dateihandle).
#Endregion ;Datei3 schreiben (alphabetisch sortierte Vokabelliste, mit Worthäufigkeit)--------------/
#Region ;---Datei3 nun in ein zweidimensionales Array einlesen--------------------------------------\
$Datei=$Datei3
If Not _FileReadToArray($Datei, $Arbeitsarray, Default, Chr(9)) Then
MsgBox(4096, "Fehler!", "Fehler beim Einlesen der Datei:" & @CRLF & $Datei)
Exit
EndIf
#Endregion ;Datei3 nun in ein zweidimensionales Array einlesen--------------------------------------/
_ArraySort($Arbeitsarray, 1, 1, 0, 0) ;Vokabelliste nach Worthäufigkeit absteigend sortieren.
#Region ;---Datei4 schreiben (die nach Worthäufigkeit sortierte Vokabelliste)-----------------------\
$Datei=$Datei4
Local $Dateihandle = FileOpen($Datei, 34) ;Datei zum Schreiben öffnen/erzeugen.
If $Dateihandle = -1 Then
MsgBox(4096, "Fehlercode: " & @error, "Fehler beim Schreiben der Datei:" & @CRLF & $Datei)
Exit
EndIf
_FileWriteFromArray($Dateihandle, $Arbeitsarray, 1 ,Default ,@Tab) ;Komplettes Array schreiben.
FileClose($Dateihandle) ;Datei schließen (bei Unicode mittels Dateihandle).
#Endregion ;Datei4 schreiben (die nach Worthäufigkeit sortierte Vokabelliste)-----------------------/
#Region ;---Zusammenfassung anzeigen und Vokabelliste in Notepad öffnen-----------------------------\
Local $ZeilenDatei2 = _FileCountLines($Datei2) ;Zählt die Zeilen in der angegebenen Datei.
Local $ZeilenDatei3 = _FileCountLines($Datei3) ;Zählt die Zeilen in der angegebenen Datei.
$Infostring="Im Text wurden " & $ZeilenDatei2 & " Wörter gefunden, basierend auf " & $ZeilenDatei3 & " Vokabeln."
MsgBox($MB_SYSTEMMODAL, "Zusammenfassung:", $Infostring)
Run("notepad.exe " & $Datei4) ;Notepad starten und Datei2 anzeigen
#EndRegion ;Zusammenfassung anzeigen und Vokabelliste in Notepad öffnen-----------------------------/
|
Forensoftware: Burning Board® 3.1.7, entwickelt von WoltLab® GmbH