2012-01-06 10 views
0

私は次の形式の辞書を持っています。私は分割関数を使ってさまざまな要素を分けています(ここでコンマ(、)が発生しています)、リストから名前を抽出しようとしています...正規表現を使用しようとしているが、明らかに無残のpythonに新しいことができないのです...名前は次の形式である...Python:特定の番号を取得します。

  1. ファーストネーム(スペース)姓
  2. 名(スペース)名(スペース) (スペースを
  3. x.name
  4. xyname
  5. 名に名前を付けます)は、x。xとyはジョンのためにJ.のような名前のイニシャルを表している(スペース)(名)

など また、あなたがそのまま他の情報を保持「\ tを」除去するのに私を導くことができるかどうかだろうまた素晴らしい。 どんな種類のヘルプも歓迎すべきものではありません...ありがとうございます。 、利用ストリップをタブや余分なスペースを削除するには

[[' I. Antonov', ' I. Antonova', ' E. R. Kandel', ' and R. D. Hawkins. Activity-dependent presynaptic facilitation and hebbian ltp are both required and interact during classical conditioning in aplysia. Neuron', ' 37(1):135--47', ' Jan 2003.'], ['\tSander M. Bohte ', ' Joost N. Kok', ' Applications of spiking neural networks', ' Information Processing Letters', ' v.95 n.6', ' p.519-520'], [' L. J. Eshelman. The CHC Adaptive Search Algorithm: How to Have Safe Search When Engaging in Nontraditional Genetic Recombination. Foundations Of Genetic Algorithms', ' pages 265-283', ' 1990.'], ['Wulfram Gerstner ', ' Werner Kistler', ' Spiking Neuron Models: An Introduction', ' Cambridge University Press', ''], [' D. O. Hebb. Organization of behavior. New York: Wiley', ' 1949.'], [' D. Z. Jin. Spiking neural network for recognizing spatiotemporal sequences of spikes. Physical Review E', '69', ' 2004.'], ['Wolfgang Maass ', ' Christopher M. Bishop', ' Pulsed Neural Networks', ' MIT Press', ' '], ['Wolfgang Maass ', ' Henry Markram', ' Synapses as dynamic memory buffers', ' Neural Networks', ' v.15 n.2', ' p.'], [' H. Markram', ' Y. Wang', ' and M. Tsodyks. Differential signaling via the same axon of neocortical pyramidal neurons. Neurobiology', ' 95:5323--5328', ' April 1998.'], ['\t\tD. E. Rumelhart ', ' G. E. Hinton ', ' R. J. Williams', ' Learning internal representations by error propagation', ' Parallel distributed processing: explorations in the microstructure of cognition', ' vol. 1: foundations', ' MIT Press', ' Cambridge', ' MA', ' 1986 </a> \t\t\t\t\t\t\t\t\t'], ['\t J. D. Schaffer', ' L. D. Whitley', ' and L. J. Eshelman. Combinations of genetic algorithms and neural networks: A survey of the state of the art. In Combinations of Genetic Algorithms and NeuralNetworks', ' 1992.', ' COGANN-92. International Workshop on', ' pages 1--37', ' Philips Labs.', ' Briarcliff Manor', ' NY', ' 6 Jun 1992.'], ['\t S. Song', ' K. D. Miller', ' and L. F. Abbott. Competitive hebbian learning through spike-timing-dependent synaptic plasticity. Nature Neuroscience', ' 3(9):919--926', ' 2000.'], ['\t L. Watts. Event-driven simulation of networks of spiking neurons. Advances in Neural Information Processing Systems', ' 6:927--934', ' 1994.']] 

答えて

1

これはかなりあなたの入力に非常に調整する必要があるように見えます。あなたが解析しているテキストには非常に多くの異なる単語や構文が存在するため、作成したルールで100%の精度を得ることはおそらくありません。ここでは例があります、しかし、あなたの元の入力テキストがinput_text呼ばれると仮定すると(コンマは名前だけを制限するものではないので)、私は(スプリットを使用しないと思う方法は、本当にすべてが便利です):

import re 

regexes = (r'[A-Z][a-z]+ [A-Z][a-z]+', # capitalized first and last name 
      r'[A-Z]\. [A-Z][a-z]+')  # capitalized initial, then last name 
names = [] 

for regex in regexes: 
    names += re.findall(regex, input_text) 

あなたの名前のタイプに合った正規表現を追加したいと思うでしょう。これは名前を見つけるのには良い仕事ですが、多くの誤検出もあります(Information Processingはこれらのルールに基づいて名前のように見えます)。しかし、これはあなたに出発点を与えるはずです。

+0

の違いを知ることは非常に難しい上記の溶液は非常に有用であることが判明...私はしたいのですが似たようなものを聞いてください...しかし、別の文脈では...私のリストにはフォーマットの名前が入っています... ['ジョン、スミス、ウィリアムが教えて、ジャコブ・オアム'最初の名前johnを修正するにはスミスは1つの完全な名前ですが、生データの形式のためにこのようになりました...今は上記のメソッドを使用して、私は ab = re.search((r ' [AZ] [az] + [AZ] \、[AZ] [az] + ')、zz [uy]) ここで、zz [uy]は文字列の場所です... – irfanbukhari

+0

今私が欲しいのは私です私はちょうどあなたを置き換えるしたいですjohnの正しい形式のeの名前a。 smith、william tell、jacob oram ...リストを参考にしてください。 – irfanbukhari

+0

私がやりたいことは、 "、" "a"の後に "a"をjohn a、smithを "。それを文字列に戻してください – irfanbukhari

0

():

>>> "\t foobar \t\t\t".strip() 
'foobar' 
1

タブを削除(および先頭または文字列の末尾に他の空のスペース)するには:

stripped = [s.strip() for t in mylist] 

正直言って、名前を抽出しようとしている場合、そのような行を分割することは役に立ちません - いくつかの名前がタイトルとともにどのようにグループ化されているかに注目してください。名前にマッチする良い正規表現を作成し、個々の行にre.findallを使用する方が良いでしょう。

0

また、この仕事が既に行われているオンライン情報源を見つけるのが簡単かもしれません。たとえば、thisまたはthisのような場所では、

0
  1. ストリップすべての文字列
  2. 名確実でない文字列を識別する(非常に長いもの、数字を含めるものを、リスト内のこれらの後に1)確実名です
  3. indentify文字列(ショートリストの先頭にある文字列、$ [AZ] [az] {0,3}のパターンで始まる文字列(Dr.、Miss、Mr、Profなど)
  4. あなたの最後の文字列これらのルールと一致することはできませんし、certidudeの係数を作成することによって選択するファジールールを作成しようとする:リストのbegininに近い、短い文字列は、大きなsi ze。そのような基準を追加し、最小得点を設定します。

高精度が必要な場合は、名前データベースとベイジアンフィルタにloofが必要です。

これは完璧ではありません:それは名前名名」と「単語単語単語」

関連する問題