c# xml. Загрузка () блокировка файла на дисковых ошибках порождения

Первая часть Вашего вопроса не звучит настолько плохой. Все, что в основном необходимо сделать, читается каждое слово из файла (или поток w/e), и поместите его в дерево префикса и каждый раз, когда Вы случайно встречаете слово, которое уже существует, Вы увеличиваете значение, связанное с ним. Конечно, у Вас был бы черный список всего, что Вы хотели бы упущенный из Ваших вычислений также.

при использовании дерева префикса Вы удостоверяетесь, что для нахождения любого слова идет в O (N), где N является максимальной длиной слова в наборе данных. Преимущество дерева префикса в этой ситуации состоит в том, что, если Вы хотите искать множественные числа и стемминг Вас, может зарегистрироваться в O (M+1), если это даже возможно для слова, где M является длиной слова без основы или множества (который является словом? hehe). Как только Вы создали свое дерево префикса, я повторно проанализировал бы его для основ и такой и уплотнил бы его вниз так, чтобы корневое слово было тем, что содержит результаты.

После поиска у Вас могли быть некоторые простые правила на месте для имения возврата соответствия, положительного в случае корня или основы или что имеет Вас.

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

Другая опция для семантического анализа могла моделировать каждое предложение как дерево предмета, глагола, и т.д. отношения (Предложение имеет предмет и глагол, предмет имеет существительное и прилагательное, и т.д.). Как только Вы разбили весь свой текст таким образом, кажется, что могло бы быть довольно легко пробежать и получить быстрый подсчет различных соответствующих соединений, которые произошли.

Просто некоторые быстрые движения, я уверен, существуют лучшие идеи, но я люблю думать об этом материале.

22
задан Graviton 28 November 2009 в 14:19
поделиться

4 ответа

это зависит от того, что вам нужно от файла,

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

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

            FileStream xmlFile = new FileStream(xmlFilePath, FileMode.Open,
FileAccess.Read, FileShare.Read);
            xmlDoc.Load(xmlFile);
22
ответ дан 29 November 2019 в 03:57
поделиться

You can do this

using (Stream s = File.OpenRead(xmlFilePath))
{
    xmlDoc.Load(s);
}

instead of

xmlDoc.Load(xmlFilePath);
37
ответ дан 29 November 2019 в 03:57
поделиться

Если файл не слишком велик для чтения в память сразу:

xml.Load(new MemoryStream(File.ReadAllBytes(path)));
0
ответ дан 29 November 2019 в 03:57
поделиться

попробуйте:

xml.Load(
       new StreamReader(
           new FileStream(
                  path, 
                  FileMode.Open, 
                  FileAccess.Read, 
                  FileShare.Read)
            )
          );
-2
ответ дан 29 November 2019 в 03:57
поделиться
Другие вопросы по тегам:

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