javascript - Kuinka käsitellä englannin lyhenteitä ohjelmallisesti [Regex, JS, Ruby]
Tallennan luonnollista kielen käyttäjäsyötettä ja minun täytyy tarkistaa se ennalta määriteltyä 'oikeaa' versiota vastaan. Tämä on melko triviaalia, mutta en ole varma siitä, miten käsitellä englannin kielen lyhennysmuunnelmia.
Oletetaan, että odotan lausetta Olen varma, ettet tiedä mitä olet tekemässä. Vastauksen täytyy olla tarkka, mutta en halua lukita käyttäjiä vain yhteen muunnelmaan, sillä se alkaisi nopeasti turhauttaa.
Joten, pitäisikö minun syöttää käsin kaikki mahdolliset tuon lauseen variaatiot kelvollisina osumina? Näin:
"I'm positive you don't know what you're doing."
"I am positive you don't know what you're doing."
"I am positive you do not know what you're doing."
"I am positive you do not know what you are doing."
"I'm positive you don't know what you are doing."
...
Jne, jne. Mieti monimutkaisempia lauseita, niin näet, kuinka turhauttavaa tästä tulee.
Vai onko olemassa ohjelmallista tapaa käsitellä tätä? Regexin, JS:n, Rubyn tai Railsin (työkalut, joita käytän) avulla?
Kaikki apu on arvostettua, kiitos.
Vastaus #1
Englannissa ei voi olla niin monta supistusta. Tallentaisin jokaisen muunnelman avaimena, joka osoittaa samaan arvoon, kuten (pseudo Ruby-tyylinen mutta tietysti se voitaisiin tehdä myös JS:llä)
"aren't" => :arent
"are not" => :arent
etc.
Tallenna sitten oikea lause käyttäen jaettuja arvoja.
":im positive you :dont know what :youre doing"
Kun saat syötteen, korvaa vastaavat avaimet niiden tallennetulla arvolla, sitten tarkista muunnettu lause oikeaa vastaan, joka on tallennettu erityisesti merkittyjen lyhentymien kanssa.
(Huomautus: muutamissa tapauksissa, joissa saatat haluta vastata yksilöllisesti eri ilmauksille, joilla on identtiset supistukset, tee erityisjärjestelyt.)
