ドメイン名を構成単語と数字に分割したい
iamadomain11.com = ['i', 'am', 'a', 'domain', '11']
どうすればいいですか?複数のセットが可能である可能性があることは承知していますが、現在でも問題はなく、1 セットの可能性しかありません。
ドメイン名を構成単語と数字に分割したい
iamadomain11.com = ['i', 'am', 'a', 'domain', '11']
どうすればいいですか?複数のセットが可能である可能性があることは承知していますが、現在でも問題はなく、1 セットの可能性しかありません。
これは、O'ReillyMediaの本BeautifulDataで実際に解決されています。第14章「自然言語コーパスデータ」では、自由に利用できる巨大なトークン頻度データセットを使用して、Pythonで必要に応じて正確に実行するスプリッターを作成します。
これは楽しい問題です!まず、辞書が必要です。パフォーマンス上の理由から、これをハッシュセットに格納します (おそらく Python で辞書型を使用できます)。次に、可能な各文字列 ("i"、"ia"、"iam"、..."n11"、"1"、"11"、"1") を反復処理し、辞書で一致を確認します。次に、重複のない連続したセットが得られるまで、これらの一致を繰り返すだけです。
これは、迅速かつ汚いでしょう。これを行うには、おそらくもっと速い方法があります。
これは、単語間にスペースがない中国語のトークン化の問題に似ています。この段落は、Manning、Raghavan、Schütze による「Introduction to Information Retrieval」から引用したもので、オンラインで入手できます。
この現象は、主要な東アジア言語 (中国語、日本語、韓国語、タイ語など) では限界に達しており、テキストは単語間にスペースを入れずに書かれています。[...] ここでの 1 つのアプローチは、事前の言語処理として単語のセグメンテーションを実行することです。単語セグメンテーションの方法は、大きな語彙を持ち、未知の単語に対していくつかのヒューリスティックで最長の語彙一致を取得する方法から、手動でセグメント化された単語でトレーニングされた、隠れマルコフ モデルや条件付きランダム フィールドなどの機械学習シーケンス モデルを使用する方法までさまざまです。
最初のステップとして貪欲な辞書マッチングを行い、次にヒューリスティックを追加して最も一般的な失敗ケースを処理することをお勧めします。