Сохранение графиков в Haskell

Я не думаю, что код машинного чтения распространяется со стандартным дистрибутивом.

Вы должны собрать банку из полного GitHub.

https://github.com/stanfordnlp/CoreNLP/tree/master/src/edu/stanford/nlp/ie/machinereading

9
задан Dominique Fortin 28 March 2017 в 19:16
поделиться

2 ответа

Не насколько я знаю. Необходимо записать пересекающую график функцию.

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

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

Восстановление графика означает использовать "женившийся" шаблон. Считайте сохраненный график в структуру [(Строка, [Строка])]. Затем исходный график может быть восстановлен со следующим кодом:

import qualified Data.Map as M

data Node = Node String [Node]

instance Show Node where
   show (Node name others) = "Node " ++ show name ++ 
         " " ++ show (map nodeName others)
      where nodeName (Node n _) = n

restoreGraph :: [(String, [String])] -> M.Map String Node
restoreGraph pairs = table
   where
      table = M.fromList $ map makeNode pairs
      makeNode (name, others) = (name, Node name $ map findNode others)
      findNode str = fromJust $ M.lookup str table

Отметьте взаимную рекурсию: таблица называет makeNode, который называет findNode, который называет таблицу. Благодаря отложенным вычислениям это делает Правильную Вещь.

Править: кодируйте теперь протестированный и немного расширенный.

8
ответ дан 4 December 2019 в 21:13
поделиться

Да и нет. Это можно сделать через знание предметной области структуры вашего типа узла и определение некоторого понятия равенства, которое вы можете проверить, в сочетании со списком или картой узлов, замеченных до сих пор, для восстановления совместного использования. В патологическом случае в GHC есть понятие StableName для построения такого понятия.

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

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

2
ответ дан 4 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

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