ეს ნოუთბუქი არის AI დამწყებთათვის სასწავლო პროგრამა-დან.
ამ მაგალითში ჩვენ ვისწავლით, თუ როგორ მოვამზადოთ NER მოდელი ანოტირებული კორპუსი დასახელებული ერთეულის ამოცნობისთვის მონაცემთა ნაკრებიდან Kaggle-დან. სანამ გააგრძელებთ, გთხოვთ, გადმოწეროთ ner_dataset.csv ფაილი მიმდინარე დირექტორიაში.
იტვირთება…მონაცემთა ნაკრების მომზადება
ჩვენ დავიწყებთ მონაცემთა ბაზის წაკითხვით მონაცემთა ჩარჩოში. თუ გსურთ გაიგოთ მეტი პანდების გამოყენების შესახებ, ეწვიეთ გაკვეთილი მონაცემთა დამუშავების შესახებ ჩვენს მონაცემთა მეცნიერება დამწყებთათვის-ში
იტვირთება…გამოტანა
Sentence # Word POS Tag
0 Sentence: 1 Thousands NNS O
1 NaN of IN O
2 NaN demonstrators NNS O
3 NaN have VBP O
4 NaN marched VBN Oმოდით მივიღოთ უნიკალური ტეგები და შევქმნათ საძიებო ლექსიკონები, რომლებიც შეგვიძლია გამოვიყენოთ ტეგების კლასის ნომრებად გადაქცევისთვის:
იტვირთება…გამოტანა
array(['O', 'B-geo', 'B-gpe', 'B-per', 'I-geo', 'B-org', 'I-org', 'B-tim',
'B-art', 'I-art', 'I-per', 'I-gpe', 'I-tim', 'B-nat', 'B-eve',
'I-eve', 'I-nat'], dtype=object)იტვირთება…გამოტანა
'O'ახლა ჩვენ იგივე უნდა გავაკეთოთ ლექსიკასთან დაკავშირებით. სიმარტივისთვის შევქმნით ლექსიკას სიტყვების სიხშირის გათვალისწინების გარეშე; რეალურ ცხოვრებაში შეიძლება დაგჭირდეთ Keras vectorizer-ის გამოყენება და სიტყვების რაოდენობის შეზღუდვა.
იტვირთება…ჩვენ უნდა შევქმნათ წინადადებების ნაკრები ტრენინგისთვის. მოდით გადავხედოთ თავდაპირველ მონაცემთა ბაზას და გამოვყოთ ყველა ცალკეული წინადადება X (სიტყვების სია) და Y (ნიშანთა სია):
იტვირთება…ჩვენ ახლა ვექტორიზაციას მოვახდენთ ყველა სიტყვასა და ნიშანს:
იტვირთება…გამოტანა
([10386,
23515,
4134,
29620,
7954,
13583,
21193,
12222,
27322,
18258,
5815,
15880,
5355,
25242,
31327,
18258,
27067,
23515,
26444,
14412,
358,
26551,
5011,
30558],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0])სიმარტივისთვის, ჩვენ ყველა წინადადებას ჩავსვამთ 0 ტოკენებით მაქსიმალურ სიგრძემდე. რეალურ ცხოვრებაში, შეიძლება გვსურს გამოვიყენოთ უფრო ჭკვიანი სტრატეგია და ბალიშების თანმიმდევრობა მხოლოდ ერთი მინი პარტიაში.
იტვირთება…ტოკენის კლასიფიკაციის ქსელის განსაზღვრა
ჩვენ გამოვიყენებთ ორ ფენის ორმხრივ LSTM ქსელს ტოკენის კლასიფიკაციისთვის. იმისათვის, რომ გამოვიყენოთ მკვრივი კლასიფიკატორი ბოლო LSTM ფენის თითოეულ გამოსავალზე, ჩვენ გამოვიყენებთ TimeDistributed კონსტრუქციას, რომელიც იმეორებს იმავე მკვრივ ფენას LSTM-ის თითოეულ გამოსავალზე ყოველ საფეხურზე:
იტვირთება…გამოტანა
Model: "sequential_3"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_4 (Embedding) (None, 104, 300) 9545400
bidirectional_6 (Bidirectio (None, 104, 200) 320800
nal)
bidirectional_7 (Bidirectio (None, 104, 200) 240800
nal)
time_distributed_3 (TimeDis (None, 104, 17) 3417
tributed)
=================================================================
Total params: 10,110,417
Trainable params: 10,110,417
Non-trainable params: 0
_________________________________________________________________
გაითვალისწინეთ, რომ ჩვენ ცალსახად ვაზუსტებთ maxlen-ს ჩვენი მონაცემთა ნაკრებისთვის - იმ შემთხვევაში, თუ გვინდა, რომ ქსელმა შეძლოს ცვლადი სიგრძის თანმიმდევრობების დამუშავება, ჩვენ უნდა ვიყოთ უფრო ჭკვიანები ქსელის განსაზღვრისას.
მოდით ახლა ვავარჯიშოთ მოდელი. სიჩქარისთვის ჩვენ მხოლოდ ერთი ეპოქისთვის ვივარჯიშებთ, მაგრამ შეგიძლიათ უფრო დიდხანს სცადოთ ვარჯიში. ასევე, შეიძლება დაგჭირდეთ მონაცემთა ნაკრების გარკვეული ნაწილის გამოყოფა, როგორც სასწავლო მონაცემთა ბაზა, რათა დააკვირდეთ ვალიდაციის სიზუსტეს.
იტვირთება…გამოტანა
1499/1499 [==============================] - 740s 488ms/step - loss: 0.0667 - acc: 0.9841
<keras.callbacks.History at 0x16f0bb2a310>შედეგის ტესტირება
ახლა ვნახოთ, როგორ მუშაობს ჩვენი ერთეულის ამოცნობის მოდელი ნიმუშის წინადადებაზე:
იტვირთება…იტვირთება…გამოტანა
john -> B-per
smith -> I-per
went -> O
to -> O
paris -> B-geo
to -> O
attend -> O
a -> O
conference -> O
in -> O
cancer -> B-org
development -> I-org
institute -> I-org
Takeaway
თუნდაც მარტივი LSTM მოდელი აჩვენებს გონივრულ შედეგებს NER-ზე. თუმცა, ბევრად უკეთესი შედეგების მისაღებად, შეიძლება დაგჭირდეთ დიდი წინასწარ მომზადებული ენის მოდელების გამოყენება, როგორიცაა BERT. BERT-ის ტრენინგი NER-ისთვის Huggingface Transformers ბიბლიოთეკის გამოყენებით აღწერილია აქ.