11

変換器を DOT ファイル形式で保存しています。gvedit を使用してグラフのグラフィカル表現を表示できますが、DOT ファイルを実行可能なトランスデューサに変換して、トランスデューサをテストし、受け入れる文字列と受け入れない文字列を確認するにはどうすればよいでしょうか。

Openfst、Graphviz、およびそれらの Python 拡張機能で見たほとんどのツールでは、DOT ファイルはグラフィカルな表現を作成するためにのみ使用されますが、ファイルを解析して、文字列をテストできるインタラクティブなプログラムを取得したい場合はどうでしょうか。トランスデューサー?

タスクを実行するライブラリはありますか、それともゼロから作成する必要がありますか?

私が言ったように、DOT ファイルは私が設計した英語の形態をシミュレートする変換器に関連しています。巨大なファイルですが、どのように見えるかを示すために、サンプルを提供します。名詞と複数形に関して英語の振る舞いをモデル化する変換器を作成したいとしましょう。私の辞書は、たった 3 つの単語 (book、boy、girl) で構成されています。この場合のトランスデューサは次のようになります。

ここに画像の説明を入力

これは、この DOT ファイルから直接構築されます。

digraph A {
rankdir = LR;
node [shape=circle,style=filled] 0
node [shape=circle,style=filled] 1
node [shape=circle,style=filled] 2
node [shape=circle,style=filled] 3
node [shape=circle,style=filled] 4
node [shape=circle,style=filled] 5
node [shape=circle,style=filled] 6
node [shape=circle,style=filled] 7
node [shape=circle,style=filled] 8
node [shape=circle,style=filled] 9
node [shape=doublecircle,style=filled] 10
0 -> 4 [label="g "];
0 -> 1 [label="b "];
1 -> 2 [label="o "];
2 -> 7 [label="y "];
2 -> 3 [label="o "];
3 -> 7 [label="k "];
4 -> 5 [label="i "];
5 -> 6 [label="r "];
6 -> 7 [label="l "];
7 -> 9 [label="<+N:s> "];
7 -> 8 [label="<+N:0> "];
8 -> 10 [label="<+Sg:0> "];
9 -> 10 [label="<+Pl:0> "];
}

このトランスデューサーを言葉に対してテストすると、それをフィードするとbook+Pl吐き出されbooks、逆もまた同様であることがわかります。このような分析とテストを可能にする形式にドット ファイルを変換する方法を確認したいと思います。

4

6 に答える 6

3

Graphvizライブラリをインストールします。次に、次のことを試してください。

import graphviz
graphviz.Source.from_file('graph4.dot')
于 2016-04-03T17:31:10.103 に答える
3

https://code.google.com/p/pydot/を使用してファイルをロードすることから始めることができます。そこからは、入力文字列に従ってインメモリ グラフをトラバースするコードを比較的簡単に記述する必要があります。

于 2015-02-04T05:57:01.080 に答える