Come analizzare l'input dell'utente e determinare se (il tipo di) corrisponde a una risposta

1

Sto lavorando a un sistema di quiz che consentirà agli utenti di inserire il testo come risposta. La domanda potrebbe essere qualcosa di semplice da iniziare, cercando una frase breve o alcune parole selezionate come la risposta "corretta".

Avere una sola frase corretta potrebbe essere limitante. Può darsi che l'utente salvi alcune parole, scrive in poche parole, fornisca una risposta parziale o qualcosa del genere.

Mi è permesso renderlo così semplice, o complesso come mi piace. Se decido di volere che sia semplice, forzare gli utenti a essere piuttosto più espliciti è un'opzione praticabile. Tuttavia, se ho tempo, mi piacerebbe anche pensare di permettere un po 'di vaghezza o errori di ortografia, o anche fare qualche analisi della risposta per essere più intelligente su come gestirlo.

Iniziamo da qualche parte nel mezzo. Vorrei analizzare un (breve) blocco di testo inserito da un utente per errori di ortografia e parole chiave che potrebbero rendere la risposta una corrispondenza. Quali teorie dovrei guardare per ottenere questo?

Se è di qualche aiuto, userò PHP, anche se sono certo che i principi saranno gli stessi.

Grazie mille,

Simon.

    
posta simonw16 28.11.2016 - 15:04
fonte

1 risposta

2

It may be that the user misses out a few words, writes in short hand, supplies a partial answer, or something along those lines.

Questo porta ad un processore di linguaggio naturale. Dal momento che sembra che tu non abbia mai lavorato con uno di essi, può essere utile sottolineare che gli NLP sono un argomento ampio e piuttosto complesso , il che significa che non devi aspettarti di implementarne uno in un piccolo progetto in un questione di giorni.

Puoi semplificare un po 'il tuo problema originale, ad esempio:

  • Passaggio dell'input dell'utente tramite un correttore ortografico,
  • Calcolare quante parole corrispondono all'elenco delle parole previste, e quante no,
  • Determinare se la soglia è stata raggiunta.

Ovviamente, ciò porterebbe sia a falsi positivi che a falsi negativi.

Esempio:

Per una domanda come la tua in una forma di quiz, potresti aspettarti di trovare le parole chiave "naturale", "lingua", "processore", "elaborazione", "nlp".

  • Se l'utente scrive male i termini scrivendo "io userei un procesor natrual langage per task taht", il correttore ortografico lo aggiusterà a "Io utilizzerei un processore di linguaggio naturale per quell'attività", che darebbe l'indice match / mismatch di 3/7, che, a sua volta, indicherebbe che l'utente ha risposto correttamente.

  • Tuttavia, l'utente che inserisce una risposta come "Per rispondere a questo problema, potrebbero essere utilizzate alcune alternative, incluse le tecniche del campo di comprensione del linguaggio naturale". Avrebbe un indice di 2/17 e probabilmente fallire, nonostante il fatto che la risposta sia corretta. Questo rende questo approccio incline agli errori.

Un altro problema con questo approccio è che se continui a lavorare sul progetto, sarai incline ad aggiungere sempre più regole nel tempo (ad esempio un dizionario di parole irrilevanti, come "I", "the", "E", ecc.) Questo potrebbe portarti a reinventare virtualmente la ruota, e magari reinventare quali soluzioni NLP ti danno da zero.

    
risposta data 28.11.2016 - 15:32
fonte