Как я могу правильно снабдить префиксом слово и?

Я предполагаю то, что я имел в виду, был, каковы инновации, которые ORMs обеспечивают по созданию Вашего DAL с помощью традиционного ADO.NET, SQL и отображая их на объекты в коде?

Вот три главных части моего DAL, и я соответствую ORMs для наблюдения преимуществ:

  1. у Вас все еще должен быть запрос в ORM = SQL (SQL более мощен безусловно)

  2. , Отображающийся код перемещается в конфигурацию, но все еще не устраненный, просто смещается от одной парадигмы до другого

  3. , Объекты должны определяться и управляться плотно relatedto Ваша Схема данных, в отличие от этого, в традиционном подходе, который я могу сохранить их отделенными.

я пропускающий что-то?

91
задан Fred Foo 2 November 2010 в 12:37
поделиться

18 ответов

  1. Загрузите Википедию
  2. Распакуйте ее и напишите программу быстрой фильтрации, которая выводит только текст статьи (загрузка обычно выполняется в формате XML вместе с метаданными, не относящимися к статье).
  3. Найдите все экземпляры a (n) .... и сделайте индекс для следующего слова и всех его префиксов (для этого вы можете использовать простое суффиксное дерево). Это должно быть чувствительно к регистру, и вам понадобится максимальная длина слова - 15 букв?
  4. (необязательно) Отбросьте все те префиксы, которые встречаются менее 5 раз или где «a» против «an» дает меньше 2 / 3 большинство (или другие пороги - настройте здесь). Желательно оставить пустой префикс, чтобы избежать угловых случаев.
  5. Вы можете оптимизировать свою базу префиксов, отбросив все те префиксы, родительский элемент которых имеет ту же аннотацию «a» или «an».
  6. При определении того, следует ли использовать «A» или «AN», найдите самый длинный совпадающий префикс и следуйте его примеру. Если вы не отбросили пустой префикс на шаге 4, тогда всегда будет совпадающим префиксом (а именно пустым префиксом), в противном случае вам может потребоваться особый случай для полностью несовпадающей строки (например, ввод должен быть очень редким).

Вы, вероятно, не сможете добиться большего, чем это - и он определенно побьет большинство систем, основанных на правилах.

Изменить: Я реализовал это в JS / C # . Вы можете попробовать его в своем браузере или загрузить небольшую, многоразовую реализацию JavaScript, которую он использует. Реализация .NET - это пакет AvsAn на nuget . Реализации тривиальны, поэтому при необходимости легко перенести на любой другой язык.

Оказывается, «правила» несколько сложнее, чем я думал:

  • это непредвиденный результат, но это единогласное голосование
  • это честное решение, но куст жимолости
  • Символы: Это номер 0800 или ∞ орегано.
  • Акронимы: Это ученый НАСА, но аналитик АНБ; автомобиль FIAT, но политика FAA.

... которая просто подчеркивает, что систему, основанную на правилах, будет сложно построить!

s честное решение, но куст жимолости
  • Символы: Это номер 0800 или ∞ орегано.
  • ] Сокращения: Это ученый НАСА, но аналитик АНБ; автомобиль FIAT, но политика FAA.
  • ... которая просто подчеркивает, что систему, основанную на правилах, будет сложно построить!

    s честное решение, но куст жимолости
  • Символы: Это номер 0800 или ∞ орегано.
  • ] Сокращения: Это ученый НАСА, но аналитик АНБ; автомобиль FIAT, но политика FAA.
  • ... которая просто подчеркивает, что систему, основанную на правилах, будет сложно построить!

    135
    ответ дан 24 November 2019 в 06:45
    поделиться

    выбор «а» или «а» зависит от того, как это слово произносится. Глядя на слово, вы не всегда можете сказать его правильное произношение, например, жаргон, аббревиатуру и т. Д. Одним из способов может быть словарь с поддержкой фонем и использование информации о фонемах, связанной со словом, для определения того, следует ли использовать «a» или «an».

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Проверить, начинается ли слово с гласной или с согласной. «U», как правило, является согласным и гласным («yu»), следовательно, принадлежит к группе согласных для ваших целей.

    Буква «h» обозначает gottal stop (согласный) во французских и французских словах используется на английском языке. Вы можете составить их список (на самом деле, включая «честь», «честь» и «час» может быть достаточно) и посчитать их как начинающиеся с гласных (поскольку английский язык не распознает голосовую остановку).

    Также считайте «ес» как согласный звук и т. Д.

    Это не так уж сложно.

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Я не думаю, что вы можете просто заполнить какой-нибудь шаблонный материал вроде 'a / an 'как одношаговое прикрытие. В противном случае вы получите ошибки предположения, например, все слова с «h» продолжаются «o» получить »вместо« a »как« дом »- (дом?). По сути, вы в конечном итоге включите логику английского языка или изредка найдете редкие случаи, которые заставят вас выглядеть глупо.

    продолжайте "о" получить "и" вместо "а" как "дом" - (дом?). По сути, вы в конечном итоге включите логику английского языка или изредка найдете редкие случаи, которые заставят вас выглядеть глупо.

    продолжайте "о" получить "и" вместо "а" как "дом" - (дом?). По сути, вы в конечном итоге включите логику английского языка или изредка найдете редкие случаи, которые заставят вас выглядеть глупо.

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Я просто выгляжу как набор эвристик. Это должно быть немного сложнее и ответить на некоторые вопросы, на которые у меня никогда не было хорошего ответа, например, как вы относитесь к сокращениям («RPM» или «RPM»? Я всегда думал, что последнее имеет больше смысла).

    Быстрый поиск привел к лингвистическим библиотекам, которые говорят о том, как обращаться с английским сингулярным префиксом, но вы, вероятно, сможете что-то найти, если достаточно покопаться. А если нет - всегда можно написать собственную библиотеку флексов и снискать мировую известность :-).

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Я бы использовал алгоритм, основанный на правилах, чтобы охватить столько, сколько смогу, а затем использовал бы список исключений. Если вы хотите пофантазировать, вы можете попробовать определить несколько новых «правил» из своего списка исключений.

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Обратите внимание, что существуют различия между американскими и британскими диалектами, как указала Grammar Girl в своем эпизоде ​​ A Versus An .

    Одна из проблем - когда слова произносятся по-разному. на британском и американском английском. Например, слово, обозначающее определенный вид растения, произносится как «erb» в американском английском и «herb» в британском английском. В редких случаях, когда это является проблемой, используйте форму, которую ожидают в вашей стране или большинство ваших читателей.

    2
    ответ дан 24 November 2019 в 06:45
    поделиться

    По умолчанию ширина ввода контролируется параметром size , который для type = "text" соответствует количеству символов в ширину, он должен быть .

    Так как это измеряется в символах, а не в пикселях, фактический размер пикселя определяется используемым шрифтом (фиксированной ширины).

    8
    ответ дан 24 November 2019 в 06:45
    поделиться

    Вы должны реализовать вручную и добавить исключения, которые вы хотите, например, если первая буква - «H», за которой следует «O», например, честный, час ... а также наоборот такие как европа, университет, б / у ...

    9
    ответ дан 24 November 2019 в 06:45
    поделиться

    Если бы вы могли найти источник написания слов для произношения слов, например:

    "honest":"on-ist"
    "horrible":"hawr-uh-buhl, hor-"
    

    , вы могли бы основывать свое решение на первом символе написанной строки произношения. Для повышения производительности, возможно, вы могли бы использовать такой поиск для предварительного создания наборов исключений и вместо этого использовать эти меньшие наборы поиска во время выполнения.

    Отредактировано для добавления:

    !!! - Я думаю, вы могли бы использовать это для создания своих исключений: http://www.speech.cs.cmu.edu/cgi-bin/cmudict

    Не все, конечно, будет в словаре - это означает, что не все возможные исключения попадут в ваши наборы исключений - но в этом случае вы можете просто использовать по умолчанию для гласных / а для согласных или использовать другую эвристику с лучшими шансами.

    (Просматривая словарь CMU, я был рад увидеть, что он включает имена собственные для стран и некоторых других мест - так что там будут такие примеры, как «украинец», «газета USA Today», «картина в уральском стиле».)

    Еще раз редактируем, чтобы добавить: Словарь CMU не содержит общих сокращений, и вы должны беспокоиться о тех, которые начинаются с s, f, l, m, n, u и x. Но существует множество списков сокращений, как в Википедии, которые вы можете использовать для добавления в исключения.

    14
    ответ дан 24 November 2019 в 06:45
    поделиться

    Вам нужно использовать список исключений. Я не думаю, что все исключения четко определены, потому что иногда это зависит от акцента человека, произносящего слово.

    Один глупый способ - спросить у Google две возможности (используя один из поисковых API) и используйте самые популярные:

    Или:

    Следовательно, «европа» и «честный» - это правильные версии.

    15
    ответ дан 24 November 2019 в 06:45
    поделиться

    Вы используете «а», когда следующее слово не является гласным? И вы используете «an» всякий раз, когда есть гласная?

    С учетом сказанного, не могли бы вы просто использовать регулярное выражение вроде «a \ s [a, e, i, o, u]. *»? А затем замените его на "an?"

    -2
    ответ дан 24 November 2019 в 06:45
    поделиться

    Как? Как насчет того, когда? Получите существительное со статьей. Спросите об этом в определенной форме.

    Спросите существительное со статьей. Многие элементы кодовой базы MUD хранят элементы в виде информации, состоящей из:

    • одного или нескольких ключевых слов
    • краткой формы
    • длинной формы

    Форма ключевого слова может быть «коротким мечом ржавый». Краткая форма будет «меч». Длинная форма будет «ржавым коротким мечом».

    Вы пишете веб-сервис «а против какого»? Сделайте шаг назад и посмотрите, сможете ли вы устранить эту утечку дальше по течению. Вы можете построить плотину, но если вы не остановите ее течь, она рано или поздно выльется наружу.

    Определите, насколько это важно, и, как предлагали другие, выбирайте «быстро, но грубо» или «дорого, но крепко».

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Я не могу быть уверен, что в нем есть соответствующая информация, чтобы различать «a» и «an», но база данных Princeton WordNet существует именно для целей подобные задачи, поэтому я думаю, что данные там есть. Он содержит несколько десятков тысяч слов и сотни тысяч отношений между сказанными словами (IIRC; я не могу найти текущую статистику на сайте). Посмотри. Его можно загрузить бесплатно.

    0
    ответ дан 24 November 2019 в 06:45
    поделиться

    Взгляните на Perl Lingua :: EN :: Inflect . См. подпункт _indef_article в исходном коде.

    2
    ответ дан 24 November 2019 в 06:45
    поделиться

    @Nathan Long: Скачивание википедии на самом деле неплохая идея. Все изображения, видео и другие медиа не нужны.

    Я написал (паршивую) программу на php и javascript (!), Чтобы прочитать всю шведскую википедию (или, по крайней мере, все статьи, к которым можно было добраться из статьи о математике, которая была началом моего паука).

    Я собрал все слова и внутренние ссылки в базе данных, а также отслеживал частоту каждого слова. Теперь я использую это как базу данных слов для различных задач: * Поиск всех слов, которые могут быть созданы из заданного набора букв (включая подстановочные знаки) * Создан простой файл синтаксиса для шведского языка (все слова, отсутствующие в базе данных, считаются неправильными).

    Да, и загрузка всей вики заняла около недели при использовании моего портативного компьютера, работающего большую часть времени, с подключением на 10 Мбит.

    Когда вы это сделаете, записывайте все вхождения, несовместимые с английским языком, и посмотрите, не являются ли некоторые из них ошибками. Иди исправь их и отдай что-нибудь сообществу.

    3
    ответ дан 24 November 2019 в 06:45
    поделиться

    Вам необходимо ознакомиться с грамматическими правилами для неопределенных артиклей (в английской грамматике есть только два неопределенных артикля - «a» и «an). Вы можете не согласиться, что это звучит правильно, но правила английской грамматики очень ясны :

    «Слова a и an неопределенные статьи. Мы используем неопределенный статья перед словами, которые начинаются с гласным звуком (a, e, i, o, u) и неопределенный артикль перед словами которые начинаются на согласный звук (все Вероятно, проще всего создать правило, а затем создать список исключений и использовать его. Не думаю, что их будет так много.

    5
    ответ дан 24 November 2019 в 06:45
    поделиться

    Правило очень простое. Если следующее слово начинается с гласного звука, используйте «ан», если оно начинается с согласной, используйте «а». Проблема в том, что наша школьная классификация гласных и согласных не работает. «H» в «honor» - гласная, но «h» в «больнице» - согласная.

    Еще хуже то, что некоторые слова, такие как «честное», начинаются с гласной или согласной, в зависимости от того, кто их произносит. . Хуже того, некоторые слова меняются в зависимости от слов вокруг них для некоторых говорящих.

    Проблема ограничена только тем, сколько времени и усилий вы хотите вложить в нее. Вы можете написать что-нибудь в паре, используя «aeiou» в качестве гласных за пару минут, или вы можете потратить месяцы на лингвистический анализ вашей целевой аудитории.

    0
    ответ дан 24 November 2019 в 06:45
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: