Ho un sacco di nomi umani. Sono tutti nomi "occidentali" e ho solo bisogno di convenzioni/abbreviazioni americane (ad es., Invece di Sr. per señor). Sfortunatamente, le persone a cui sto inviando le cose non hanno inserito i loro nomi, quindi non posso chiedere loro come vorrebbero essere chiamati. Conosco il sesso di ogni persona e il suo nome completo, ma non ho veramente analizzato le cose in modo più specifico.Human Name parsing
Alcuni esempi:
- John Smith
- John Smith, Jr.
- John Smith Jr.
- John Smith XIV
- Dr. John Smith, Ph.D.
mi piacerebbe essere in grado di analizzare le parti di ogni nome:
name = Name.new("John Smith Jr.")
name.first_name # <= John
name.greeting # <= Mr. Smith
Se io sono in cerca di "saluto" (probabilmente non il migliore termine), quello che voglio è qui , per 1-4, "Mr. Smith". Per il 5, vorrei il dottor Smith ma mi accontenterei di Mr. Smith.
Una gemma rubino per questo sarebbe l'ideale. Sono stato ispirato a chiedere qualcosa di strano a Chronic, una gemma di Ruby che gestisce il tempo in modo notevolmente umano, lasciandomi correttamente dire "martedì scorso" e averlo trovato con qualcosa di sensato. "Qualche algoritmo sarebbe sufficiente per colpire di più dei casi d'angolo.
sto cercando di affrontare alcuni dei problemi presentati in falsehoods programmers believe about names
Questo mi dà un ottimo punto di partenza per scrivere la mia libreria su DWIW. Risposta accettata – Hut8