Ankündigung

Einklappen
Keine Ankündigung bisher.

Texte interpretieren in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Texte interpretieren in PHP

    Hallo zusammen,
    ich möchte mich an ein Thema heranwagen, wovon ich noch nicht viel Ahnung habe und über Suchmaschinen irgendwie nicht so richtig zum Ergebnis komme.

    Fakt ist: Es geht im Internet immer mehr um Spracherkennung und Textinterpretation.
    Wenn ich schaue, dann gibt es Alexa, Cortana, etc. Man sagt einen Satz und der Kasten weiß was ich will (mehr oder weniger).
    Man schreibt eine WhatsApp oder SMS irgendwohin und ein Computer reagiert darauf.
    Wir benutzen Systeme wie Skype und Slack und ein Robot reagiert auf unsere Eingaben.

    Und genau das will ich in meiner Software auch haben. Ich hätte gerne einen Chat, wo ich mich mit einen Robot unterhalten kann.
    Wie ich einen Chat baue mit PHP, HTML und JavaScript, dass weiß ich und ich kein Problem für mich. Mein Problem beginnt an der Stelle, wo ich eine Eingabe in mein PHP-Script bekommen.

    Wie interpretiere ich am Besten den eingegeben Text. Nehmen wir mal das Beispiel Pizza-Lieferant. Sagen wir mal Beispielhaft, ich hätte einen Pizza-Liefer-Service-Shop.

    Eingabe Kunde im Chat:
    "Ich würde gerne eine Pizza bestellen mit Schinken und Salami"
    "Pizza-Bestellung"
    "Einmal mit Schinken bitte"
    "Habt ihr auch Salami?"
    ...und und und...

    Also müsste ich jetzt irgendwie den Text interpretieren und eine "Aktion" erstellen:
    "Bestellung Pizza"
    "Frage Zutat Salami"
    etc, etc...

    Meine Suche im web ist da relativ ergebnislos. Meine Treffer landen mehr auf Schülerseiten zur Analyse von Texterörterungen oder bei OCR-Seiten.

    Jemand einen Tipp für mich, wie man das am Besten realisieren kann?
    Mir ist bewusst, dass es ein extrem schweres Thema ist. Ich will auch nicht jeden Satz perfekt interpretieren können. Eine sehr einfache Unterhaltung mit meinem Bot würde mir vollkommen ausreichen. Und fürs erste ist Deutsch die einzige Sprache mit der ich mich spielen will.

    Falls es schon fertige Software gibt, wäre ich um Tipps dankbar.
    Falls es schon Abhandlungen gibt, wäre ich um Links dankbar.
    Falls ihr Ideen habt, dann immer her damit.

    Gruß,
    Alf


  • #2
    So wie Du es schilderst - woran du hängst -sehe ich keinen unterschied zwischen sprach und texteingabe.
    es wäre sicher nicht schlecht das etwas zu konkretisieren ^^
    einen pizzaria allerdings würde ich über die telephonanlage abfackeln.

    Kommentar


    • #3
      Pizzeria natürlich nur als Fallbeispiel. Im Endeffekt will ich das später für Termine, Aktivitäten, ToDo-Listen, etc.. verwenden.
      Mir ist erst mal egal, ob die "Unterhaltung" über die Telefonanlage (gesprochen) kommt oder ob jemand einen Text per WhatsApp schickt oder ein Chat-Fenster auf der Homepage bedient wird. Speech-To-Text soll vielleicht mal später kommen. Daher gehe ich in meinem Beispiel davon aus, dass der Text schon mal irgendwie in mein PHP-Script gekommen ist.

      Woran ich hänge ist das "Texteingabe zu Aktion". Wie interpretiere ich denn am Besten eine beliebige Eingabe zu einer Aktion, die ich maschinell verarbeiten kann.
      Ich stelle mir das irgendwie so vor, dass ich eine Liste an Befehlen habe die ausgeführt werden können. Ähnlich einer Api, WSDL, SOAP, etc.

      PHP-Code:
      class pizzaria {
        public function 
      createBestellung():bestellungsDingsbums {}
        public function 
      hasZutat(string $zutatenName):bool {};
        
      /* ... */

      Jetzt wird ein "Satz" in den Chat geschrieben und ich muss den passenden Befehl in der "Api" finden.

      PHP-Code:
      class sprachDingsbums {
        public function 
      callMe(string $txt):bool {
          
      $myAction $this->txtToAction($txt);
          switch (
      $myAction->whatToDo()) {
            case 
      'bestellung':
              
      $bestellung $pizzaria->createBestellung();
              
      $this->answer('Ihre Bestellung wurde aufgegeben. Ihre Bestellnummer ist die '.$bestellung->getBestellnummer());
              break;
            case 
      'zutatennachfrage':
              if (
      $pizzaria->hasZutat($myAction->param(1))) {
                
      $this->answer('Ja, haben wir!');
              } else {
                
      $this->answer('Nein, haben wir leider nicht!');
              }
              break;
          }
        }
        public function 
      txtToAction(string $txt):actionDingsbums /* ? HIER liegt mein Problem ? */ }

      Natürlich ist die Sprache sehr komplex. Also bräuchte ich irgendwelche "Suchmuster" also einen Interpreter der deutschen Sprache. Und das ist mein Problem.
      Ich brauche einen Ansatz für einen Interpreter. Wie baut man so einen Interpreter sinnvoll auf? Unterschiedliche Schreibweisen, Satzbau, Rechtschreibfehler, Dialekte, etc...

      Kommentar


      • #4
        Also meine Erfahrung mit Siri, Alexa & Co. ist, dass es nicht mal milliardenschwere Unternehmen wie Apple, Google, usw. hinbekommen, dass sowas vernünftig funktioniert.

        Einfache Kommandos wie "Timer 5 Minuten", oder "Wecker 13 Uhr" gehen noch irgendwie. Aber sobald auch nur ein Hauch von Grammatik und Komplexität dazu kommt, ist es vorbei und das Ergebnis ist Müll.

        Kommentar


        • #5
          Unterschiedliche Schreibweisen, Satzbau, Rechtschreibfehler, Dialekte, etc...
          Hau deine möglichen Schlüsselwörter in eine Postgres Datenbank und wirf jedes eingegebene Wort mit fuzzysearch dagegen. Funktioniert gut.

          Auf Heise gab es letztens mal ein Beispiel wie mit Python ein simpler Chatbot entwickelt wurde, den Artikel suche ich nachher mal raus.
          Es gibt da jedenfalls verschiedene Wege um dir das Leben leichter zu machen. "Alexa, mach Licht aus" ist schonmal ein Beispiel für eine lose, aber definierte Grammatik - indem man mit "Alexa, " beginnen muss, hat das Programm einen definierten Anfang ab wann es aufpassen muss.

          Bei der Pizzabestellung wäre mein einfacher Ansatz also, die Bestellung in Schritte zu definieren:
          - erste Nachricht: Was und mit welchen Zutaten
          - Nachfrage: "irgendwas weglassen?"
          - zweite Nachricht: Zutaten weglassen
          - Nachfrage: "passt so?"
          - dritte Nachricht: "jo" oder "no"

          Für jeden der Schritte gibt es dann Keywords nach denen die Nachrichten durchsucht werden.
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

          Kommentar


          • #6
            Zitat von hellbringer Beitrag anzeigen
            Also meine Erfahrung mit Siri, Alexa & Co. ist, dass es nicht mal milliardenschwere Unternehmen wie Apple, Google, usw. hinbekommen, dass sowas vernünftig funktioniert.

            Einfache Kommandos wie "Timer 5 Minuten", oder "Wecker 13 Uhr" gehen noch irgendwie. Aber sobald auch nur ein Hauch von Grammatik und Komplexität dazu kommt, ist es vorbei und das Ergebnis ist Müll.
            aber nicht doch, da gibt es menschen die helfen:
            Bei digitalen Assistenten wie Amazons Alexa, dem Google Assistant und Siri wurden Fragmente von Mitschnitten seit Jahren zum Teil auch von Menschen angehört und abgetippt, um die Qualität der Spracherkennung zu verbessern
            quelle:
            https://www.heise.de/mac-and-i/meldu...r-4487006.html

            Kommentar


            • #7
              Datenbank mit Schlüsselwörtern klingt schon mal nach einem Plan. fuzzysearch hab ich in vielen Bereichen schon, incl. Qualitätsmanagement der Suchqualität.
              Es auf mehrere Steps zu machen klingt auch sinnvoll. Das heisst ich müsste mir in der Unterhaltung einen oder mehrere Zustände merken auf die ich nachfragen kann. Somit kann ich die Anforderung über mehrere Step schärfer stellen.
              Und im Endeffekt muss ich mit jeder Unterhaltung, die geführt wird die Schlüsselwörter ergänzen für mehr Schärfe.
              Damit kann ich mal spielen.

              Kommentar


              • #8
                Schau dir mal ELIZA an, es bildet die Grundlage für viele Chatroboter.
                Testen kann man es hier..

                Weitere Quellen:
                https://de.wikipedia.org/wiki/ELIZA
                https://de.wikipedia.org/wiki/Kategorie:Chatbots

                Kommentar


                • #9
                  Ist das Teil der Lösung, oder Teil des Problems?

                  Wenn Sie gelangweilt oder einsam sind, brauchen Sie nie das Gefühl, wieder einsam! Hans ist hier, um Ihnen 24/7 sprechen.
                  You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

                  Kommentar


                  • #10
                    Hättest du mal Hans gefragt
                    Menschen(Sie): Ist das Teil der Lösung, oder Teil des Problems?
                    Hans: Alles deutet auf "Ja".

                    Dem schliesse ich mich mal an

                    Kommentar


                    • #11
                      Zitat von protestix Beitrag anzeigen
                      Schau dir mal ELIZA an, es bildet die Grundlage für viele Chatroboter.
                      Testen kann man es hier..

                      Weitere Quellen:
                      https://de.wikipedia.org/wiki/ELIZA
                      https://de.wikipedia.org/wiki/Kategorie:Chatbots
                      Danke schön...

                      Kommentar


                      • #12
                        Zitat von protestix Beitrag anzeigen
                        Hättest du mal Hans gefragt
                        Menschen(Sie): Ist das Teil der Lösung, oder Teil des Problems?
                        Hans: Alles deutet auf "Ja".

                        Dem schliesse ich mich mal an
                        Endlich verstehe ich einen Großteil deiner Antworten.

                        Kommentar

                        Lädt...
                        X