2014-02-11 4 views
0

Я играю с записью строки предложения для проекта, над которым я работаю на C#, и хотел посмотреть, есть ли альтернативный способ поиска глагола с использованием встроенной функции.Можно ли проверить глагол, не создавая мою собственную базу данных?

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

Рассмотрим следующий вход:

«Разработка строка соответствия программного обеспечения для глагола»

Программа будет читать строку и проверить каждое слово,

if (word == isVerb) 
    { 
     m_verbs.Add(word); 
    } 
+0

Вы конкретно спрашивать, можно ли хранить глаголы в другом месте в случае C# имеют строковые функции ? Да, для обоих! – Liath

+0

Уместно ли вам использовать веб-службу словаря? Как вы собираетесь размещать слова, которые являются как глаголами, так и существительными? – owen79

+0

Обратите внимание, что в зависимости от контекста одна и та же строка может быть глаголом или иметь некоторую другую функцию. Вы не можете достичь идеальной точности. – usr

ответ

1

Короткий ответ:

Существует лучший способ.

Длинный ответ:

Это не так просто. Проблема в том, что в класс строк в C# нет встроенных языковых функций. Это деталь реализации, которая опирается на плечи разработчика.

У вас есть некоторые грамматические (или, возможно, лексические - лучшее слово) вопросы, которые следует учитывать, как указал Owen79 в своем комментарии. Тогда возникает вопрос об ограничениях среды/ресурсов.

У вас есть несколько вариантов доступны для вас:

  • Web на основе словарных услуг. Вы можете запросить их со словами вашего предложения и вернуть «статус» каждого слова. Затем вы берете только статусы, которые вы хотите, например, глаголы. Вот ссылка на DictService, которая также содержит образец кода C#.

  • Текст/xml/другое решение на основе файлов. Подобный подход, вы просто просматриваете слова в файле и действуете в соответствии с наличием или отсутствием слова в файле. Вы можете кэшировать (загружать в память) содержимое файла для сохранения операций ввода-вывода. Вот ссылки на списки regular и irregular глаголов.

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

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

Надеются, что это помогает

1

вы можете загрузить общие глаголы с диска в текстовом файле. Если у вас есть много глаголов и беспокоиться о памяти вы можете ведро их в общие и редко или в алфавитном порядке, то при необходимости

1

Если вы не хотите использовать опцию Databse загрузки в словарях (хотя высоко Рекоммендуемый), то вам нужно поместить их в структуру данных (например, массив или список). Затем вы можете использовать мощные методы расширения System.Linq.

Например:

string[] allVerbs = new[] { "eat", "drink" }; // etc 
string s = "Develop string matching software for verb"; 
var words = s.Split(' '); 
foreach (var word in words) 
    if (allVerbs.Contains(word.ToLower())) 
     m_verbs.Add(word); 
+0

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

+0

База данных считается надежным, эффективным, надежным и быстрым источником данных. Язык «SQL» разработан, чтобы сделать вашу жизнь намного проще, просто написав несколько полу-английских предложений, чтобы укомплектовать требуемую задачу. Это намного лучше, чем изобретать колесо –

Смежные вопросы