Wordlist

  • VB.NET
  • .NET (FX) 4.0

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von OpenArtsDesigns.

    Guten Tag,

    zuerst ich habe keine Ahnung in welche Kategorie dieses Thema gehört :P .
    Also ich habe folgendes Problem, ich habe eine einfache Sprachsteuerung geschrieben, welche ganz einfach funktioniert, ich habe eine Grammar.xml mit den jeweilgen Wörtern die später nach dem Sprechen abgerufen, und ggf. einem befehl zugeteilt werden/wurden (als <item>BeispielWort</item> wohl gemerkt). Nun wollte ich diese Liste erweitern und habe mir eine Text Datei mit den 10.000 häufigsten Wörtern im deutschen Sprachgebrauch gemacht. Anfangs habe ich einfach im Editor/Notepad einfach jeweils einzelnt ein "." vor und ein "," hinter jedes wort gemacht (um hinterher den "." mit <item> und das "," mit </item> zu ersetzten), allerdings war ich nach 15 Minuten erst mit 100 Wörtern fertig (das ersetzten geht mit STRG+h ja flott, nur eben der Rest nicht.) Also, hat jemand von euch eine Idee, wie man alle Wörter schnell und einfach in diesen "." und "," zustand versetzten kann, oder am besten direkt mit <item>Wort</item> zu makieren?

    PS: Hier ein Ausschnitt der Liste :) :

    Spoiler anzeigen

    .
    .
    .
    Verpflichtung
    handele
    Tiefe
    Stufe
    Mütter
    Zeilen
    Leider
    studierte
    engagiert
    verweigert
    Ihm
    eines Tages
    dran
    verteidigen
    stelle
    Laden
    daneben
    einzig
    Temperaturen
    Preisen
    bedient
    rechte
    rote
    jüdische
    Träger
    genaue
    überschritten
    Ehre
    wahre
    wieviel
    ausgeführt
    Anträge
    Esslingen
    endete
    Angriffe
    .
    .
    .


    Und so soll es ausshen, aber nunmal schnell :D :

    Spoiler anzeigen

    XML-Quellcode

    1. .
    2. .
    3. .
    4. .<item>einer</item>
    5. <item>Der</item>
    6. <item>um</item>
    7. <item>am</item>
    8. <item>sind</item>
    9. <item>noch</item>
    10. <item>wie</item>
    11. <item>einem</item>
    12. <item>über</item>
    13. <item>einen</item>
    14. <item>Das</item>
    15. <item>so</item>
    16. <item>Sie</item>
    17. <item>zum</item>
    18. <item>Senders</item>
    19. <item>Teppich</item>
    20. <item>Titeln</item>
    21. <item>EUR</item>
    22. <item>Erreger</item>
    23. <item>satt</item>
    24. <item>Strafkammer</item>
    25. <item>Ute</item>
    26. <item>Julia</item>
    27. <item>frage</item>
    28. <item>zahlte</item>
    29. <item>Prinzen</item>
    30. <item>stabilen</item>
    31. <item>Reports</item>
    32. <item>Schade</item>
    33. .
    34. .
    35. .

    Die Datei in ein Programm einlesen, jede Zeile einzeln und dann halt vorn was dran und hinten was dran und dann Datei wieder speichern.

    Das is doch nicht schwer oder?
    Auf der Suche nach Coding-Kursen auf Lence.at
    Hallo KingTimon,

    also das habe ich ja auch so gemacht (sogar oben erläutert), nur dauert das bei 10000 Zeilen ein wenig zu lange. Darum suche ich eine Möglichkeit das für alle gleichzeitig zu machen. Oder habe ich was falsch verstanden? Bin noch neu in dem Thema :)

    MfG
    Nein ich habs so verstanden dass du das ganze manuell, also mit der Hand in einem Editor gemacht hast.
    Ich würde an deiner Stelle ein Programm schreiben, welches dir die Arbeit abnimmt. Ich glaub da bist schneller dran.

    MFG
    Auf der Suche nach Coding-Kursen auf Lence.at
    Hi,

    da muss überhaupt nix geschrieben oder programmiert werden. Einfach nen ordentlichen Editor (z.B. notepad++) öffnen, deine Datei aufrufen, RegEx-Suche nach ^(.+)$ und Ersetzung mit <item>$1</item> - Thema in 20 Sekunden erledigt. Und bei lediglich 10.000 Zeilen wirst du vermutlich ned mal die Sanduhr zu sehen bekommen.

    Link :thumbup:
    Hello World
    geht das auch irgendwie das man es für einen Befehl nutzen kann? da man ja immer nur 1 Zeile ersetzten kann (anscheinend), also ich meine das wie folgt:

    VB.NET-Quellcode

    1. If spoken_text = "hier soll jedes wort der List rein" Then
    2. TextBox1.Text &= e.Result.Text & "" & Environment.NewLine
    3. End If


    Aber ich kann irgendwie keine Multilines in Notepad++ ersetzten:/
    Hopla, das tut mir leid, mit "es" meinte ich die Methode mit "^(.+)$" nur eben so das es den restlichen Teil meines Code Auschnittes auch mit ein bezieht. Im Kontext mit dem Rest meiner Spracherkennung ergibt der Code Sinn. Und zwar ist es eine Art "Google" Suche die sobald ich das jeweilge Wort sage, dieses mit der grammar vergleicht und in eine textbox einfügt, danach kann man folgendes machen:

    VB.NET-Quellcode

    1. If spoken_text = "Suche starten" Then
    2. Process.Start("https://www.google.de/search?q=" + TextBox1.Text + " &ie=utf-8&oe=utf-8&client=ubuntu&channel=fs&gfe_rd=cr&ei=cNp0VfziG5GwOvfpgPAC&gws_rd=ssl")
    3. End If


    Er soll lediglich dazu dienen, alles ohne "Knopfdruck" Googlen zu können. :)

    MfG
    zunächstmal solltest du versuchen, die Textbox aus deinem Denken zu verbannen.
    Trenne Daten und Gui, und nachdenken solltest du über die Daten.
    Und da bin ich wieder bei einem Datenmodell, nämlich du brauchst wie mir scheint, eine "erweiterte" Grammatik, die nämlich DatenWorte und Ausführungsbefehle unterscheiden kann.
    Also zB. "billig tanken" wäre ein Daten-Wort, und "googeln" ein Ausführungsbefehl.

    Mit Textboxen hat dieses Problem überhaupt nix zu tun.
    Mag ja sein, aber es funktioniert ja:)

    EDIT: Ich habe extra eine TextBox genommen, damit man es einfach wieder ändern kann wenn es falsch verstanden wurde ^^
    Zudem habe ich es so gemacht, dass das Programm erst danach sucht wenn vorher "suche nach" gesagt wurde. Also würde
    es nur auf diesen bestimmten Befehl reagieren, wenn man es mit "suche nach" verlangt.
    Hi,

    freut mich wenn dich mein Tipp vorangebracht hat.
    Das restliche was du geschrieben hast versteh' ich nicht ganz. Was für ne Spracherkennungssoftware verwendest du? Setzt du den Fokus vorher in eine Textbox, damit deine Software das gesprochene als Text dort reinschreibt? Falls ja, könntest du ja einfach sprechen "suche nach irgendein-wort" und im TextChanged-Event der Textbox prüfst du, ob der Inhalt auf den RegEx-Pattern ^suche nach (.+) matcht - falls ja, extrahier dir die CaptureGroup raus ($1 quasi) und mach dann mit process.start einen Aufruf in der Form http://google.de/search?q=<der-gematchte-text>

    Link :thumbup:
    Hello World
    Hallo @OpenArtsDesigns,

    wenn dein Programm nur zum Suchen für Google da ist wäre es nicht einfacher sich Chrome zu installieren?
    Du kannst (zumindest in der Beta Version) wie auf dem Handy dann einfach "Okay Google" und deinen Suchbegriff sagen :D

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Guten Tag,

    @Ruerte ja, das ist mir klar *lach* :D, nur ich finde es schön so etwas selber zu machen, und am Ende erfolgreich nutzen zu können, da ich die Sprache erst seit ein paar Tagen relativ beherrsche, wäre es eine Art Erfolg:D Außerdem ist das Programm was ich bis jetzt programmiert habe nicht nur auf Google ausgelegt, sondern soll viel eher in den Bereich der Allgemeinen Sprachsteuerung übergehen, von der die "mündliche" Google Suche nur ein Teil ist.

    @Link Ja, in etwa genau so:D Aber mit meiner Kenntnis von VB kam ich eben nur auf den Pfad es so zu machen wie ich oben versucht habe zu erklären, und viel anders ist es ja nicht zu deinem, nur eben mit dem Unterschied, dass ich keine Ahnung von RegEx Pattern und sonstigem habe, da ich wie oben angesprochen , erst seit ein paar Tagen relativ weiß was ich machen muss um das umzusetzen was ich vorhabe:D

    MfG

    EDIT: Oder Ich frage mal anders, unabhängig von dem vorherigen, sondern einfach nur um zu wissen wie folgendes in Zukunft geschehen kann. Ich habe folgendes 10.000 mal:

    VB.NET-Quellcode

    1. [size=8]If spoken_text = "werden" Then TextBox1.Text &= e.Result.Text & "" & Environment.NewLine End If
    2. If spoken_text = "aus" Then TextBox1.Text &= e.Result.Text & "" & Environment.NewLine End If
    3. If spoken_text = "er" Then TextBox1.Text &= e.Result.Text & "" & Environment.NewLine End If
    4. If spoken_text = "hat" Then TextBox1.Text &= e.Result.Text & "" & Environment.NewLine End If
    5. If spoken_text = "daß" Then TextBox1.Text &= e.Result.Text & "" & Environment.NewLine End If[/size]

    Es soll aber so aussehen:

    VB.NET-Quellcode

    1. [size=8]If spoken_text = "werden" Then
    2. TextBox1.Text &= e.Result.Text & "" & Environment.NewLine
    3. End If
    4. If spoken_text = "aus" Then
    5. TextBox1.Text &= e.Result.Text & "" & Environment.NewLine
    6. End If
    7. If spoken_text = "er" Then
    8. TextBox1.Text &= e.Result.Text & "" & Environment.NewLine
    9. End If
    10. If spoken_text = "hat" Then
    11. TextBox1.Text &= e.Result.Text & "" & Environment.NewLine
    12. End If
    13. If spoken_text = "daß" Then
    14. TextBox1.Text &= e.Result.Text & "" & Environment.NewLine
    15. End If[/size]


    Also prinzipiell ab einem gewissen Punkt in der Spalte ich sage mal ab Collum 55 (nach then) und/oder 138 (nach NewLine) ein "Enter" setzten so wie gerade gezeigt. (Notepad++)

    EDIT: Man muss glaube ich etwas heruas zoomen um in der ersten Code Box, die Zeilen so zu sehen wie ich es meine:)
    EDIT: Meine Güte was ist denn los plötzlich:D Also habe zu dem Zeilen Umbruch eine Lösung gefunden diese Lautet: \n :D

    MfG:)

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „OpenArtsDesigns“ ()