0

Python で WordNet と NLTK を使用して、意味的距離を使用して基本的なテキスト類似性ルーチンを実装したいと思います。これがアイデアです: 2 つの概念/フレーズ/カテゴリ A と B を類義語、下位語、上位語、メロニム、メトニムで拡張し、2 つの形成されたベクトル a と b の間の距離を計算します。おそらくコサイン距離として、これらをどのように計算するかは確信しています。

ほとんどの場合、私の入力データは語句ではなく、固有名詞または名詞 (ブランドまたは製品カテゴリを含む製品名) で構成されています。例えば、「リゾート」は「高級ホテル」、「ブラックキャビア」は「グルメ」、Aは「ブラックキャビア」、Bは「グルメ」と判断したいと思います。

これがどの程度機能するか、また、WordNet をより洗練されたものにするために、hypo/hyper-nyms で 1 レベル上下する方法を教えてください。

Whooshなどの洗練されたものを使用せずに、十分に機能するシンプルで基本的なソリューションを探しています。

WordNet よりも優れたものを使用する必要がありますか?


アップデート:

各名詞句を次の方法で処理しています (NLTK と WordNet を使用): 1. 句の各単語について、synset (名詞のみ) を収集し、synset の各要素の上位語と下位語の synset でそれを補完します。 . とりあえず、階層を無視して、すべての synset をリストに取り込みます。2. 各カテゴリ カテゴリを説明するキーワードについて、このプロセスを繰り返します。3. これで、各カテゴリとターゲットの synset のリストができました。それぞれの距離を計算するだけです (コサインまたはウーとパーマーの距離)。2 つのベクトルでペアごとの距離を収集し、それらを合計して、カテゴリまたはターゲットを説明するキーワードの数で正規化します。次に、最小距離を選択します。

かなり基本的で非効率的なように聞こえます。それをより良くするための次のステップは何ですか?

私はそれをゼロから行うことに興味があります。また、物事がどのように機能し、どのように行う必要があるかを理解するための最良の練習でもあります.


例: word_list - ターゲット: ['学校'、'子供'、'教師']

カテゴリ: [['ビジネス', '組織', '会社'],['教育', '学校', '大学']]

ターゲット概念「教育」の拡張リスト、3 つのキーワード: [Synset('school.n.01')、Synset('school.n.02')、Synset('school.n.03')、Synset('school .n.04')、Synset('school.n.05')、Synset('school.n.06')、Synset('school.n.07')、Synset('child.n.01') 、Synset('kid.n.02')、Synset('kyd.n.01')、Synset('child.n.02')、Synset('kid.n.05')、Synset('teacher. n.01')、Synset('teacher.n.02')、Synset('educational_institution.n.01')、Synset('building.n.01')、Synset('education.n.03')、 Synset('body.n.02')、Synset('time_period.n.01')、Synset('educational_institution.n.01')、Synset('animal_group.n.01')、Synset('academy.n .03')、Synset('alma_mater.n.01')、Synset('conservatory.n.01')、Synset('correspondence_school.n.01'), Synset('crammer.n.03'), Synset('dance_school.n.01'), Synset('dancing_school.n.01'), Synset('day_school.n .02')、Synset('direct-grant_school.n.01')、Synset('driving_school.n.01')、Synset('finishing_school.n.01')、Synset('flying_school.n.01') , Synset('grade_school.n.01'), Synset(' Graduate_school.n.01'), Synset('language_school.n.01'), Synset('night_school.n.01'), Synset('nursing_school. n.01')、Synset('private_school.n.01')、Synset('public_school.n.01')、Synset('religious_school.n.01')、Synset('riding_school.n.01')、 Synset('secondary_school.n.01')、Synset('secretarial_school.n.01')、Synset('sunday_school.n.01')、Synset('technical_school.n.01'), Synset('training_school.n.01'), Synset('veterinary_school.n.01'), Synset('conservatory.n.02'), Synset('day_school.n.03'), Synset( 'art_nouveau.n.01'), Synset('ashcan_school.n.01'), Synset('deconstructivism.n.01'), Synset('historical_school.n.01'), Synset('lake_poets.n.01') '), Synset('pointillism.n.01'), Synset('secession.n.01')]

カテゴリ コンセプト「ビジネス」の拡張リスト、3 つのキーワード、拡張リスト内の 223 個: [Synset('business.n.01')、Synset('commercial_enterprise.n.02')、Synset('occupation.n.01') 、Synset('business.n.04')、Synset('business.n.05')、Synset('business.n.06')、Synset('business.n.07')、Synset('clientele. n.01')、Synset('business.n.09')、Synset('organization.n.01')、Synset('arrangement.n.03')、Synset('administration.n.02')、 Synset('organization.n.04')、Synset('organization.n.05')、Synset('organization.n.06')、Synset('constitution.n.02')、Synset('company.n .01')、Synset('company.n.02')、Synset('company.n.03')、Synset('company.n.04')、Synset('caller.n.01')、Synset ('company.n.06')、Synset('party.n.03')、Synset('ship's_company.n.01')、Synset('company.n.09')、Synset('enterprise.n.02')、Synset('commerce .n.01')、Synset('activity.n.01')、Synset('concern.n.04')、Synset('aim.n.02')、Synset('business_activity.n.01') , Synset('sector.n.02'), Synset('people.n.01'), Synset('acting.n.01'), Synset('social_group.n.01'), Synset('structure. n.03')、Synset('body.n.02')、Synset('administration.n.01')、Synset('orderliness.n.01')、Synset('activity.n.01')、 Synset('beginning.n.05')、Synset('institution.n.01')、Synset('army_unit.n.01')、Synset('friendship.n.01')、Synset('organization.n .01')、Synset('visitor.n.01')、Synset('social_gathering.n.01')、Synset('set.n.05')、Synset('complement.n.03')、Synset('unit.n.03')、Synset('agency.n.02')、Synset('brokerage.n .02')、Synset('carrier.n.05')、Synset('chain.n.04')、Synset('firm.n.01')、Synset('franchise.n.02')、Synset ('manufacturer.n.01')、Synset('partnership.n.01')、Synset('processor.n.01')、Synset('shipbuilder.n.03')、Synset('underperformer.n. 02'), Synset('advertising.n.02'), Synset('agribusiness.n.01'), Synset('butchery.n.02'), Synset('construction.n.07'), Synset( 'discount_business.n.01'), Synset('employee-owned_enterprise.n.01'), Synset('field.n.06'), Synset('finance.n.01'), Synset('fishing.n .02')、Synset('industry.n.02')、Synset('packaging.n.01')、Synset('printing.n.02')、Synset('publication.n.04')、Synset('real-estate_business.n.01')、Synset('storage.n.03')、Synset('tourism .n.01')、Synset('transportation.n.05')、Synset('venture.n.03')、Synset('accountancy.n.01')、Synset('appointment.n.05') 、Synset('career.n.01')、Synset('cation.n.01')、Synset('菓子.n.03')、Synset('employment.n.02')、Synset('farming. n.02')、Synset('game.n.10')、Synset('metier.n.02')、Synset('photography.n.03')、Synset('position.n.06')、 Synset('profession.n.02')、Synset('sport.n.02')、Synset('trade.n.02')、Synset('treadmill.n.03')、Synset('occasions.n .01')、Synset('land-office_business.n.01')、Synset('trade.n.03')、Synset('big_business.n.01')、Synset('shtik.n.02')、Synset('adhocracy.n.01')、Synset('affiliate.n.02')、Synset('alliance.n .03')、Synset('association.n.01')、Synset('blue.n.03')、Synset('bureaucracy.n.03')、Synset('company.n.04')、Synset ('defense.n.09')、Synset('deputation.n.01')、Synset('enterprise.n.02')、Synset('確立.n.05')、Synset('federation.n. 01')、Synset('fiefdom.n.02')、Synset('fire_brigade.n.01')、Synset('force.n.04')、Synset('girl_scouts.n.01')、Synset( 'grey.n.04')、Synset('hierarchy.n.02')、Synset('host.n.06')、Synset('institution.n.01')、Synset('line_of_defense.n.01' ')、Synset('line_organization.n.01')、Synset('machine.n.03')、Synset('machine.n.05')、Synset('musical_organization.n.01')、Synset('nongovernmental_organization.n.01')、Synset('party.n.01')、Synset('peace_corps.n .01')、Synset('polity.n.02')、Synset('pool.n.03')、Synset('professional_organization.n.01')、Synset('quango.n.01')、Synset ('tammany_hall.n.01')、Synset('union.n.01')、Synset('unit.n.03')、Synset('calendar.n.01')、Synset('classification_system.n. 01'), Synset('contrivance.n.04'), Synset('座標系.n.01'), Synset('data_structure.n.01'), Synset('design.n.02'), Synset( 'distribution.n.01'), Synset('genetic_map.n.01'), Synset('kinship_system.n.01'), Synset('lattice.n.01'), Synset('living_arrangement.n.01' '), Synset('onology.n.01')、Synset('county_council.n.01')、Synset('curia.n.01')、Synset('executive.n.02')、Synset('government_officials.n.01' )、Synset('judiciary.n.01')、Synset('management.n.02')、Synset('top_brass.n.01')、Synset('nonprofit_organization.n.01')、Synset('合理化.n.04')、Synset('reorganization.n.01')、Synset('self-organization.n.01')、Synset('syndication.n.01')、Synset('listing.n.02 '), Synset('order.n.15'), Synset('randomization.n.01'), Synset('systematization.n.01'), Synset('territorialization.n.01'), Synset(' collectivization.n.01')、Synset('colonization.n.01')、Synset('communization.n.02')、Synset('federation.n.03')、Synset('unionization.n.01' )、Synset('Broadcast_company.n.01')、Synset('bureau_de_change.n.01')、Synset('car_company.n.01')、Synset('closed_shop.n.01')、Synset('corporate_investor.n.01' )、Synset('distributor.n.03')、Synset('dot-com.n.01')、Synset('drug_company.n.01')、Synset('east_india_company.n.01')、Synset( 'electronics_company.n.01'), Synset('film_company.n.01'), Synset('food_company.n.01'), Synset('furniture_company.n.01'), Synset('holding_company.n.01') '), Synset('joint-stock_company.n.01'), Synset('limited_company.n.01'), Synset('livery_company.n.01'), Synset('mining_company.n.01'), Synset ('mover.n.04')、Synset('oil_company.n.01')、Synset('open_shop.n.01')、Synset('packaging_company.n.01')、Synset('pipeline_company.n.01'), Synset('printing_concern.n.01'), Synset('record_company.n.01'), Synset('service.n.04'), Synset('shipper.n.02' )、Synset('shipping_company.n.01')、Synset('steel_company.n.01')、Synset('stock_company.n.01')、Synset('subsidiary_company.n.01')、Synset('target_company .n.01')、Synset('think_tank.n.01')、Synset('transportation_company.n.01')、Synset('union_shop.n.01')、Synset('white_knight.n.01') , Synset('trainband.n.01'), Synset('freemasonry.n.01'), Synset('ballet_company.n.01'), Synset('chorus.n.05'), Synset('circus. n.01')、Synset('minstrel_show.n.01')、Synset('minstrelsy.n.01')、Synset('opera_company.n.01')、Synset('theater_company.n.01')、 Synset('Attention.n.03'), Synset('cohort.n.01'), Synset('number.n.07'), Synset('fatigue_party.n.01'), Synset('landing_party.n.01' )、Synset('party_to_the_action.n.01')、Synset('rescue_party.n.01')、Synset('search_party.n.01')、Synset('stretcher_party.n.01')、Synset('war_party .n.01')]

カテゴリ概念「教育」の拡張リスト - 97 個の synsets: [Synset('education.n.01')、Synset('education.n.02')、Synset('education.n.03')、Synset('education .n.04')、Synset('education.n.05')、Synset('department_of_education.n.01')、Synset('school.n.01')、Synset('school.n.02') 、Synset('school.n.03')、Synset('school.n.04')、Synset('school.n.05')、Synset('school.n.06')、Synset('school. n.07')、Synset('university.n.01')、Synset('university.n.02')、Synset('university.n.03')、Synset('activity.n.01')、 Synset('content.n.05'), Synset('learning.n.01'), Synset('profession.n.02'), Synset('upbringing.n.01'), Synset('executive_department.n .01'), Synset('教育機関.n.01')、Synset('building.n.01')、Synset('education.n.03')、Synset('body.n.02')、Synset('time_period.n.01')、 Synset('educational_institution.n.01')、Synset('animal_group.n.01')、Synset('body.n.02')、Synset('確立.n.04')、Synset('educational_institution.n .01'), Synset('coeducation.n.01'), Synset('continuing_education.n.01'), Synset('course.n.01'), Synset('elementary_education.n.01'), Synset ('extension.n.04'), Synset('extracurricular_activity.n.01'), Synset('higher_education.n.01'), Synset('secondary_education.n.01'), Synset('team_teaching.n. 01'), Synset('work-study_program.n.01'), Synset('enlightenment.n.01'), Synset('eruditeness.n.01'), Synset('experience.n.01'),Synset('foundation.n.04')、Synset('physical_education.n.01')、Synset('acculturation.n.03')、Synset('mastering.n.01')、Synset('school.n .03')、Synset('self-education.n.01')、Synset('special_education.n.01')、Synset('vocational_training.n.01')、Synset('teaching.n.01') , Synset('academy.n.03'), Synset('alma_mater.n.01'), Synset('conservatory.n.01'), Synset('correspondence_school.n.01'), Synset('crammer. n.03')、Synset('dance_school.n.01')、Synset('dancing_school.n.01')、Synset('day_school.n.02')、Synset('direct-grant_school.n.01' )、Synset('driving_school.n.01')、Synset('finishing_school.n.01')、Synset('flying_school.n.01')、Synset('grade_school.n.01')、Synset('Graduate_school .n.01'), Synset('language_school.n.01'), Synset('night_school.n.01'), Synset('nursing_school.n.01'), Synset('private_school.n.01'), Synset('public_school.n.01'), Synset('religious_school.n.01'), Synset('riding_school.n.01'), Synset('secondary_school.n.01'), Synset('secretarial_school.n .01'), Synset('sunday_school.n.01'), Synset('technical_school.n.01'), Synset('training_school.n.01'), Synset('veterinary_school.n.01'), Synset ('conservatory.n.02')、Synset('day_school.n.03')、Synset('art_nouveau.n.01')、Synset('ashcan_school.n.01')、Synset('deconstructivism.n. 01')、Synset('historical_school.n.01')、Synset('lake_poets.n.01')、Synset('pointillism.n.01')、Synset('secession.n.01')、Synset('gown.n.02')、Synset('varsity.n.01')、Synset('city_university.n.01')、Synset('oxbridge.n.01')、Synset('redbrick_university .n.01'), Synset('multiversity.n.01'), Synset('open_university.n.01')]

ターゲットの拡張リスト、57 個の synset: [Synset('school.n.01')、Synset('school.n.02')、Synset('school.n.03')、Synset('school.n. 04')、Synset('school.n.05')、Synset('school.n.06')、Synset('school.n.07')、Synset('child.n.01')、Synset( 'kid.n.02')、Synset('kyd.n.01')、Synset('child.n.02')、Synset('kid.n.05')、Synset('teacher.n.01' '), Synset('teacher.n.02'), Synset('educational_institution.n.01'), Synset('building.n.01'), Synset('education.n.03'), Synset(' body.n.02'), Synset('time_period.n.01'), Synset('educational_institution.n.01'), Synset('animal_group.n.01'), Synset('academy.n.03' )、Synset('alma_mater.n.01')、Synset('conservatory.n.01')、Synset('対応学校.n.01')、Synset('crammer.n.03')、Synset('dance_school.n.01')、Synset('dancing_school.n.01')、Synset('day_school.n.02' )、Synset('direct-grant_school.n.01')、Synset('driving_school.n.01')、Synset('finishing_school.n.01')、Synset('flying_school.n.01')、Synset( 'grade_school.n.01')、Synset(' Graduate_school.n.01')、Synset('language_school.n.01')、Synset('night_school.n.01')、Synset('nursing_school.n.01' '), Synset('private_school.n.01'), Synset('public_school.n.01'), Synset('religious_school.n.01'), Synset('riding_school.n.01'), Synset(' secondary_school.n.01'), Synset('secretarial_school.n.01'), Synset('sunday_school.n.01'), Synset('technical_school.n.01'),Synset('training_school.n.01')、Synset('veterinary_school.n.01')、Synset('conservatory.n.02')、Synset('day_school.n.03')、Synset('art_nouveau.n .01')、Synset('ashcan_school.n.01')、Synset('deconstructivism.n.01')、Synset('historical_school.n.01')、Synset('lake_poets.n.01')、Synset ('pointillism.n.01'), Synset('secession.n.01')]


ターゲット - 57、ビジネス - 223、教育 - 97 の 3 つのベクトルがあります。

ここで、ターゲットとビジネスの間の Wu と Palmer のペアワイズ距離を計算し、57x223=12711 で割ります。目標と教育の間を 57x97=5529 で割ります。

目標からビジネスまでの距離: 2305.709117171037 / 5529 = 0.9125370052417936 目標から教育までの距離: 5045.417101981877 / 12711 = 0.39693313680921066

最小距離は教育です。それは正しい答えです。

4

2 に答える 2

0

WordNet + いくつかの類似点が解決策になる可能性があります。Word2Vec を使用して、WordNet synset/*nyms 検索から取得した単語の意味距離を決定することもできます。

誰かが特定のライブラリを手伝ってくれるかもしれません (現時点では、直接使用できるものは何も思い浮かびません)。

于 2016-07-18T13:38:16.690 に答える