自然言語パーサーによって返される品詞タグやその他のラベルの識別結合を作成しようとしています。
C#/Java では文字列または列挙型のいずれかを使用するのが一般的ですが、F# ではこれらが個別の読み取り専用値であるため、判別共用体の方が適しているようです。
言語リファレンスで、この記号
``...``
を使用してキーワード/予約語を区切ることができることがわかりました。これは
type ArgumentType =
| A0 // subject
| A1 // indirect object
| A2 // direct object
| A3 //
| A4 //
| A5 //
| AA //
| ``AM-ADV``
ただし、タグには $ などの記号が含まれています。
type PosTag =
| CC // Coordinating conjunction
| CD // Cardinal Number
| DT // Determiner
| EX // Existential there
| FW // Foreign Word
| IN // Preposision or subordinating conjunction
| JJ // Adjective
| JJR // Adjective, comparative
| JJS // Adjective, superlative
| LS // List Item Marker
| MD // Modal
| NN // Noun, singular or mass
| NNP // Proper Noun, singular
| NNPS // Proper Noun, plural
| NNS // Noun, plural
| PDT // Predeterminer
| POS // Possessive Ending
| PRP // Personal Pronoun
| PRP$ //$ Possessive Pronoun
| RB // Adverb
| RBR // Adverb, comparative
| RBS // Adverb, superlative
| RP // Particle
| SYM // Symbol
| TO // to
| UH // Interjection
| VB // Verb, base form
| VBD // Verb, past tense
| VBG // Verb, gerund or persent participle
| VBN // Verb, past participle
| VBP // Verb, non-3rd person singular present
| VBZ // Verb, 3rd person singular present
| WDT // Wh-determiner
| WP // Wh-pronoun
| WP$ //$ Possessive wh-pronoun
| WRB // Wh-adverb
| ``#``
| ``$``
| ``''``
| ``(``
| ``)``
| ``,``
| ``.``
| ``:``
| `` //not sure how to escape/delimit this
``...``
WP$ や ( のような記号では機能しません。
また、パーサーが `` を意味のある記号として返すという興味深い問題があるため、これもエスケープする必要があります。
これを行う他の方法はありますか、それとも差別された組合ではこれは不可能ですか?
現在、次のようなエラーが発生しています
- 名前空間、モジュール、型、または共用体のケース名が無効です
- 識別された共用体ケースと例外ラベルは大文字の識別子でなければなりません
これらのばかげたケースで toString をオーバーライドして、記号を英数字の同等のものに置き換えることができると思いますか?