Für unseren Kennwortgenerator “Schwester-Pelzhut-Ledersofa-Auch” brauchen wir eine Liste eindeutiger Wörter. Der Einfachheit halber habe ich dafür einen vorhandenen Text genommen, der ohne Lizenzkosten zur Verfügung steht. Meine Wahl fiel auf Franz Kafkas “Verwandlung”. Da Kafka vor mehr als 70 Jahren gestorben ist, sind die Einschränkungen des Urheberrechts erloschen, man darf den Text also “einfach so” verwenden.
Nun ist der reine Text als Liste noch nicht gut geeignet, denn viele Wörter wiederholen sich. Das sind naturgemäß vor allem Trivialwörter wie Artikel oder einfache Adjektive. Ich brauchte also eine Funktion, die aus dem Text eine Wortliste macht, in dem jedes Wort nur einmal auftaucht. Das ging mit der PowerShell recht einfach.
$WordListFile = 'C:\Daten\Kafka-Verwandlung.txt' $WordList = Get-Content $WordListFile $WordArray = $WordList.Split(' ') $WordArrayUnique = @() foreach ($Word in $WordArray) { $WordTrim = ($Word -replace '[\W]', '') $WordArrayUnique +=$WordTrim } $WordArrayUnique = ($WordArrayUnique | Sort-Object -Unique) # | Measure-Object $WordArrayUnique -join(',') | Out-File 'C:\Daten\Wortliste-Kafka-Verwandlung.txt'
Das Skript öffnet eine Textdatei, das die vollständige Textquelle enthält, und liest den gesamten Text ein. Um die einzelnen Wörter zu erhalten, trennt es den Text jeweils bei einem Leerzeichen und schreibt die so entstandenen Fragmente in ein Array. Dieses Array durchläuft dann eine Schleife mit einem Regulären Ausdruck, der alle Zeichen entfernt, die nicht zu einem Wort gehören (etwa Satzzeichen). Abschließend ordnet die vorletzte Zeile das Array alphabetisch und entfernt dabei alle Dopplungen. Das so verbleibende Array mit eindeutigen Wörtern schreibt die letzte Zeile dann in die Zieldatei.
Wer wissen möchte, wie viele eindeutige Wörter so entstanden sind, entfernt das Kommentarzeichen in der vorletzten Zeile und kommentiert die letzte Zeile aus.
http://faq-o-matic.net/?p=7873