Comment puis-je correctement préfixe d'un mot avec un “a” et “un”?
J'ai un .NET application où, étant donné un nom, je veux qu'elle correctement préfixe de ce mot avec "un" ou "une". Comment dois-je procéder?
Avant que vous pensez que la réponse est tout simplement de vérifier si la première lettre est une voyelle, d'envisager des phrases comme:
- une erreur honnête
- une voiture d'occasion
- Vous avez également à considérer les abréviations qui peuvent également conduire à certaines confusions sur tha "a" ou "an" comme "de la LNH", qui sort également une lettre de son commence par une voyelle mais pas si l'abréviation peut être prononcé comme un mot comme "un périphérique NAS" ou "un événement NASCAR"
- Aussi garder à l'esprit que l'utilisation de l'un ou l'une peut varier en fonction de la prononciation dans la variété de l'anglais parlé. Les Britanniques et les Américains de la prononciation de l'herbe en est un exemple.
- En effet, mon exemple préféré de cette (trop ringard) est "SQL". Certaines personnes disent que les lettres "SQL", certaines personnes le prononcer comme le mot "suite". Chacun reçoit un autre "un" ou "une". par exemple, c'est "une suite à la déclaration de" versets "c'est un S-Q-L instruction"
- Encore plus difficile est que les opinions même varier dans le même dialecte de l'anglais! Ainsi, par exemple, officiel (royaume-UNI) anglais nous dit "un hôtel" est la structure correcte, mais la plupart des gens serait d'utiliser "un hôtel" dans la conversation courante. Si vous écrivez un, il serait très utile pour le reste d'entre nous!
- Ah... le "aspirant H". Je me souviens de ma première rencontre avec elle. Une deuxième année d'études sociales livre intitulé "Historique de la Société", un livre sur la ville coloniale de Williamsburg.
- Il semble donc qu'il n'y a pas une seule "bonne" façon, et la règle dépend de votre accent. Il suffit donc de choisir un simple hurestic, et de réclamer tout bizarreries sont en raison du programme de l'accent.
- comment vérifier l'orthographe de gérer cela? Gardent-ils de grandes listes d'exceptions?
Vous devez vous connecter pour publier un commentaire.
Vous ne pourrez probablement pas obtenir beaucoup mieux que cela - et il va certainement battre plus la règle pour les systèmes.
Edit: j'ai mis en œuvre dans ce JS/C#. Vous pouvez essayez-la dans votre navigateur, ou le télécharger à la petite, réutilisable javascript mise en œuvre qu'il utilise. L' .NET de la mise en œuvre est forfait
AvsAn
sur nuget. Les implémentations sont triviales, il devrait donc être facile de port pour toute autre langue si nécessaire.Il s'avère que les "règles" sont un peu plus complexes que ce que je pensais:
...qui va juste pour souligner qu'une règle de base du système serait difficile de construire!
Vous avez besoin d'utiliser une liste d'exceptions. Je ne pense pas que toutes les exceptions sont bien définis, car il dépend parfois de l'accent de la personne en disant le mot.
Une façon stupide est de demander à Google pour les deux possibilités (à l'aide de l'un de la recherche Api) et l'utilisation les plus populaires:
Ou:
Donc une "europe" et "honnête" sont les versions correctes.
Si vous pourriez trouver une source de la parole de l'orthographe de word prononciations, comme:
Vous pourriez vous baser votre décision sur le premier caractère de la orthographié de la prononciation de la chaîne.
Pour la performance, vous pourriez peut-être utiliser une telle recherche de pré-générer exception des ensembles et l'utilisation de ces plus petits de recherche en cours d'exécution à la place.
Modifiées afin d'ajouter:
!!! - Je pense que vous pouvez l'utiliser pour générer vos exceptions:
http://www.speech.cs.cmu.edu/cgi-bin/cmudict
Tout ne sera pas dans le dictionnaire, bien sûr - ce qui signifie pas chaque exception serait le vent dans vos exceptions ensembles - mais dans ce cas, vous pourriez juste valeur par défaut à un pour les voyelles/a pour les consonnes ou utilisez une autre heuristique avec la meilleure cote.
(À la recherche par le biais de la CMU dictionnaire, j'ai été heureux de voir qu'il comprend les noms propres de pays et de quelques autres lieux - de sorte qu'il sera hande exemples comme "un ukrainien", "USA Today", un "Oural-inspiré de la peinture".)
D'édition une fois de plus à ajouter: La CMU dictionnaire ne contient pas d'acronymes les plus courants, et vous avez à vous soucier de ceux commençant par s,f,l,m,n,u,x et. Mais il y a beaucoup de acronyme listes, comme dans le cas de Wikipédia, qui vous pouvez utiliser pour ajouter des exceptions.
hawr-uh-buhl
m'a toujours fait rire.Vous avez mis en œuvre manuellement et ajouter les exceptions que vous voulez comme par exemple si la première lettre est " H "et suivi par un" O " comme honnête, heure ... et à l'inverse, comme l'europe, l'université, utilisé ...
Depuis "un" et "une" est déterminé par les règles phonétiques et non pas de l'orthographe des conventions, je serais probablement faire comme ceci:
Vous avez besoin de regarder les règles grammaticales pour les articles indéfinis (il y a seulement deux articles indéfinis en anglais grammaire - "un" et"). Vous ne pouvez pas accepter ces sons corrects, mais les règles de La grammaire anglaise sont très claires:
Remarque cela signifie une voyelle son, et pas une voyelle lettre. Par exemple, les mots commençant par un silence "h", comme "l'honneur" ou "héritier" sont traités comme des voyelles une sont donc procédé à "un" - par exemple, "C'est un honneur de vous rencontrer". Les mots commençant par une consonne sonore avec le préfixe a - et c'est pourquoi vous dire une "voiture d'occasion" plutôt qu'une "voiture d'occasion" parce que "utilisé" a une "yoose" son plutôt qu'un "ouf" de son.
Donc, en tant que programmeur, ce sont les règles à suivre. Vous avez juste besoin d'un moyen de déterminer ce qu'est le son d'un mot commence avec, plutôt que la lettre. J'ai vu des exemples, tels que celui-ci en PHP par Jaimie Sirovich :
Il est probablement plus facile de créer la règle et puis créer une liste d'exceptions et de les utiliser. Je n'imagine pas il n'y aura que de nombreux.
@Nathan Long:
Le téléchargement de wikipédia est effectivement pas une mauvaise idée. Toutes les images, vidéos et autres médias n'est pas nécessaire.
J'ai écrit un (de merde) programme en php et javascript(!) pour lire l'intégralité du suédois wikipédia (ou au moins tous les aricles qui pourrait être atteint à partir de l'article sur les mathématiques, qui a été le début de mon araignée.)
J'ai recueilli tous les mots et les liens internes dans une base de données, et également gardé la trace de la fréquence de chaque mot. J'ai maintenant l'utiliser comme une base de données de mots pour les différentes tâches:
* Recherche de tous les mots qui peuvent être créés à partir d'un ensemble donné de lettres (y compris les génériques)
* De créer un simple fichier de syntaxe pour le suédois (tous les mots qui ne sont pas dans la base de données sont considérés comme incorrects).
Oh, et le téléchargement de l'intégralité wiki a pris environ une semaine, à l'aide de mon ordinateur portable exécutant la plupart du temps, avec 10Mbit connexion.
Lorsque vous y êtes, journal de tous les événements qui sont incompatibles avec la langue anglaise et de voir si certains d'entre eux sont des erreurs. Allez résoudre 'em et de donner quelque chose en retour à la communauté.
Homme, je me rends compte que c'est probablement une constante argument, mais je pense qu'il peut être réglé plus facile que d'utiliser ad hoc des règles de grammaire à partir de Wikipedia, qui dériverait vernaculaire de la grammaire, au mieux.
La meilleure solution, paraît-il, est d'avoir l'utilisation d'un ou de déclencher un phonème à base de concordance du mot suivant, avec certains phonèmes toujours associée à la "une" et le reste appartenant à la "une".
L'Université de Carnegie Mellon a un excellent outil en ligne pour ce genre de vérifications - http://www.speech.cs.cmu.edu/cgi-bin/cmudict - et à 125k mots avec la mise en correspondance 39 phonèmes. Branchement d'un mot en fournit l'ensemble du phonémique ensemble, dont seule la première est importante.
Si le mot n'apparaît pas dans le dictionnaire, comme la "NSA" et c'est tout en majuscule, alors le système peut supposer que le mot est un Acronyme et utilisez la première lettre de déterminer quel article indéfini à utiliser basée sur les mêmes règles d'origine définies.
Noter qu'il existe des différences entre les Américains et les Britanniques dialectes, comme la Grammaire Fille l'a souligné dans son épisode Un Contre Un.
Prendre un coup d'oeil à Perl Lingua::FR::Infléchir. Voir
sub _indef_article
dans le code source.J'ai porté une fonction de Python (à l'origine du CPAN paquet Lingua-FR-Infléchir) qui détermine correctement des sons de voyelles en C# et affiché comme une réponse à la question Déterminer par programme si pour décrire un objet avec un ou une?. Vous pouvez voir l'extrait de code ici.
Pourriez-vous obtenir un dictionnaire d'anglais qui stocke les mots écrits dans notre alphabet, et la International Phoenetic Alphabet?
Puis utilisez le phoenetics de comprendre le début sons de la parole, et donc de savoir si “un” ou “une” est-il approprié?
Pas sûr que ce serait plus facile que d' (ou autant de plaisir que de) la statistique de Wikipédia approche.
Je voudrais utiliser une règle de base de l'algorithme de couvrir autant que je le pouvais, puis utiliser une liste d'exceptions. Si vous vouliez obtenir la fantaisie, vous pourriez essayer de déterminer certaines des nouvelles "règles" à partir de votre liste d'exception.
Je ressemble à un ensemble d'heuristiques. Il doit être un peu plus compliqué et de répondre à certaines des choses que je n'ai jamais eu une bonne réponse pour, par exemple, comment traitez-vous les abréviations ("RPM" ou "RPM"? J'ai toujours pensé que ce dernier a plus de sens).
Une recherche rapide sur les résultats en matière linguistique, les bibliothèques de parler de la façon de gérer les anglais singulier préfixe, mais vous pouvez probablement trouver quelque chose si vous creusez dip assez. Et si non, vous pouvez toujours écrire votre propre inflexion de la bibliothèque et d'acquérir une renommée mondiale 🙂 .
Je ne suppose pas que vous pouvez simplement remplir quelques chaudière plaque des trucs comme "un/une", comme une étape fourre-tout. Sinon vous allez vous retrouver avec des erreurs dans les hypothèses comme tous les mots, avec le 'h' passer par 'o' obtenir " un "au lieu de" a "comme" à la maison " - (un à la maison?). Fondamentalement, vous finirez par y compris la logique de la langue anglaise ou de temps en temps trouver de rares cas que vous ridiculiser.
Vérifier si un mot commence par une voyelle ou une consonne. Un "u" est généralement une consonne et une voyelle ("yu"), donc appartient à la consonne du groupe pour vos besoins.
La lettre "h" correspond à un gottal arrêter (une consonne) en français et dans les mots français utilisés en anglais. Vous pouvez faire une liste de ceux-là (en fait, y compris "l'honneur", "honneur", et "heure" pourrait être suffisant) et de les compter comme commençant par les voyelles (depuis l'anglais ne reconnaît pas une glottale).
Également compter "de l'ue" comme une consonne etc.
Il n'est pas trop difficile.
choix de l'une ou de l'une dépend de la façon dont le mot est prononcé. En regardant le mot que vous ne pouvez pas nécessairement dire sa prononciation correcte par exemple, un Jargon ou l'abréviation etc.
L'une des façons dont nous pouvons disposer d'un dictionnaire, avec le soutien de phonèmes et d'utiliser les phonèmes de l'information associée avec le mot de déterminer si un "a" ou un "un" doit être utilisé.
Je ne peux pas être certain qu'il a suffisamment d'informations pour se différencier "un" et "une", mais Princeton WordNet base de données existe dans le but précisément de semblable sortes de tâches, donc je pense qu'il est probable que les données sont là. Il a quelques dizaines de milliers de mots et des centaines de milliers de relations entre les mots (IIRC; je ne peux pas trouver les statistiques actuelles sur le site). Lui donner un look. Il est librement téléchargeable.
Comment? Comment savoir quand? Obtenir le nom de l'article ci-joint. Demandez un formulaire spécifique.
Demander le nom de l'article. Beaucoup de BOUE code de stocker des objets comme des informations composée de:
Le mot-clé le formulaire peut être "courte épée rouillée". La forme courte sera "une épée". La version longue sera la "rouille épée courte".
Êtes-vous d'écrire un "un contre un" Web service? Prenez du recul et regardez si vous pouvez vous attaquer à cette fuite en amont. Vous pouvez construire un barrage, mais à moins que vous arrêter de couler, il fera au cours de la suite.
Déterminer le degré d'importance de tout cela, et comme d'autres l'ont suggéré, aller pour "rapide mais brut", ou "cher mais solide".
La règle est très simple. Si le mot suivant commence par une voyelle, puis utiliser "un", si elle commence par une consonne puis utilisez "a". Le plus difficile, c'est que notre école de classification des voyelles et des consonnes qui ne fonctionne pas. Le " h "dans l '"honneur" est une voyelle, mais le " h "dans un" hôpital " est une consonne.
Pire encore, certains mots comme "honnête" commencent par une voyelle ou une consonne en fonction de qui est les dire. Pire encore, certains mots changent selon les mots autour d'eux pour certains intervenants.
Le problème n'est limité que par la façon dont beaucoup de temps et d'effort que vous voulez mettre. Vous pouvez écrire quelque chose dans un couple en utilisant "aeiou", comme les voyelles dans un couple de minutes, ou vous pouvez passe des mois à faire l'analyse linguistique de votre public cible. Entre eux se trouvent un grand nombre d'heuristiques qui sera bon pour certains haut-parleurs et le mal pour les autres -, mais parce que les différents orateurs ont différentes décisions pour le même mot, il n'est tout simplement pas possible d'avoir raison tout le temps, peu importe comment vous le faites.
L'idéal serait de trouver un endroit en ligne qui peuvent vous donner les réponses, de façon dynamique les interroger et de mettre en cache les réponses. Vous pouvez amorcer le système avec quelques centaines de mots pour commencer.
(Je ne sais pas d'une source en ligne, mais je ne serais pas surpris s'il y en a un.)
Donc, une solution raisonnable est possible sans avoir à télécharger l'ensemble de l'internet. Voici ce que j'ai fait:
Je me suis souvenu que Google a publié leurs données brutes pour Google Books N-Gramme fréquences ici. J'ai donc téléchargé le 2 grammes de fichiers pour "a_" et "un". C'est à propos de 26 concerts si je me souviens bien. Depuis que j'ai rédigé une liste de chaînes de caractères où ils ont été massivement précédée par la face de l'article que vous attendez (si nous devions attendre les voyelles prendre un "un"). Que la liste finale des mots, j'ai pu stocker en moins de 7 kilo-octets.
Vous utilisez "a" à chaque fois que le mot suivant n'est pas une voyelle? Et vous utilisez "une" chaque fois qu'il y est une voyelle?
Avec cela dit, ne pourriez-vous pas tout simplement faire une expression régulière du type "\s[a,e,i,o,u].*"? Et puis le remplacer par un"?"