2

これを投稿して申し訳ありませんが、これに取り組んで多くの時間を費やして失敗しました。したがって、正規表現+ Pythonは、すべての人に挑戦します。

私はほとんど定期的にフォーマットされているデータを扱っています。会社のリストは、次のような文字列に結合されます

`Company Inc,Company, LLC,Company` 

エントリを説明するための引用符なし。上記の通常の例を使用すると、次のことができます。

>>> re.split(r',\b', 'Company Inc,Company, LLC,Company')                                                                                                                                                                                    
['Company Inc', 'Company, LLC', 'Company']

残念ながら、一部の文字列は次のように不規則にフォーマットされています。

`IBP, Inc,Tyson Foods,Inc.`

ここで、スペースによって,Inc分離されていない。Foodsだから、を使用してr',\b'、私はこれを取得します:

>>> re.split(r',\b', 'IBP, Inc,Tyson Foods,Inc.')
['IBP, Inc', 'Tyson Foods', 'Inc.']

私はこれを手に入れたいです:

['IBP, Inc', 'Tyson Foods,Inc.']

この状況であなたは何をしますか?

4

4 に答える 4

5

わかっている場合は、分割防止文字列を負の先読みに追加できます

r',\b(?!Inc\.)'
于 2013-02-22T23:04:05.353 に答える
1

Mike Mの応答を少し異なる用語で表現すると、「Inc。」、「Inc」、「LLC」などの関連性のないトークンの信頼できるリストを作成できる場合は、解析する方法があるかもしれません。それでも、split()のような自動化されたものが機能することはおそらくないでしょう。あなたはおそらくあなた自身を転がさなければならないでしょう。

于 2013-02-22T23:09:19.350 に答える
1

次のようなリストを取得するために、コンマで最初の分割を行います。

['IBP', 'Inc', 'Tyson Foods', 'Inc.']

次に、「Inc」、「Inc。」、「LLC」、「GmbH」などの非常にありそうもない会社名がリスト内の前のエントリと結合されるデータを2回目のパスで実行します。

badList = originalData.split(',')
goodList = []
rejectList = ['Inc', 'Inc.', 'LLC', 'GmbH'] # etc.

for pseudoName in badList:
   pseudoName = pseudoName.strip()
   if pseudoName in rejectList:
      goodList[-1] = goodList[-1] + ", " + pseudoName
   else:
      goodList.append(pseudoName)

この方法では、後でデータに「Farmers Group、The」などのエントリがあり、記事を適切な場所に配置した場合に、より高度な操作を行うこともできます。

于 2013-02-22T23:34:55.777 に答える
0

それはあなたが理解しなければならないエントリーの数に依存します。基本的に、高品質のデータに関する限り、あなたは困惑しています。つまり、適用しようとする自動化では、データの処理に問題が発生します。

データ品質を元に戻すには、これを手動で修正する必要があります。データ品質の問題は、コンピューターが対処するのが非常に難しい問題の1つです。

私が個人的に行うことは、期待される結果に適合しないエントリを決定するために、迅速で汚いヒューリスティックを作成することです。たとえば、あなたの例では、「Inc」または「LLC」プラスマイナス数文字の分割エントリを探します。それは、企業タイプをはるかに超えて提供していないように見えるエントリをキャッチします。あなたは「株式会社」を捕まえるでしょう。実際の会社名が近くにある必要があることを知っています。

それができたら、手作業でデータをクリーンアップして再処理できます。これは、プログラムの一部としてこの種の修正措置を書くことを正当化できる場合、数十億のエントリまでの最善の策です。ただし、Googleでない限り、人間の目で見るのが最も速くて簡単であることがほぼ確実です。

于 2013-02-22T22:52:05.140 に答える