問題タブ [sentence-similarity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1865 参照

python - ユニグラム言語モデルで計算する確率は?

文補完実装用のユニグラム言語モデルを作成しました。私はすべての単語とその出現回数を持っています。

ここからそれらを比較する方法について混乱しています。それぞれのケースの確率を計算し、最大のものを取る必要があると思います。

使用できる単語が 3 つある場合、各単語の出現回数を比較し、最も高い ? を採用します。これは適切な実装ですか?

または、各単語の出現回数を、トレーニング セットのすべての (異なる?) 単語の数で割りますか?

ありがとうございました。

0 投票する
1 に答える
278 参照

string - これはすでに文字列類似アルゴリズムですか?

レーベンシュタイン距離を除いて、文字列の類似性アルゴリズムに慣れていません。これは、私が使用しているものであり、理想的ではないことが判明したためです。

だから私は実装したい再帰アルゴリズムのアイデアを持っていますが、それがすでに存在するかどうかを知りたいので、他の人の専門知識を活用できます。

例によるアルゴリズムは次のとおりです。

文字列 1: "ポール ジョンソン"

文字列 2: "ジョン ポールソン"

ステップ 1: すべての最長一致を見つける

マッチ1:「ポール」

マッチ2:「ジョン」

マッチ3:「息子」

マッチ 4: " "

ステップ 2: 次の式を使用して各一致のスコアを計算します: ((match.len/string.len)*match.len) これにより、文字列の長さに基づいて、より長い文字列をバランスの取れた割合で重み付けできます。

マッチ 1: (4/12)*4 = 1.333...

マッチ 2: 1.333...

マッチ 3: .75

マッチ 4: .083

ステップ 3: ステップ 1 と 2 をより大きなスケールで実行します (マッチのマッチ)。これは正確にはわかりません。しかし、私の考えでは、「息子」が「ポール・ジョン」の後に来て、「ジョン・ポール」の後に来たら、それは何かを数えるべきだと思います.

ステップ 4: 計算されたすべてのスコアを合計します。

スコア: 1.333 + 1.333 + .75 + .083333 = 3.4999... (プラス、ステップ 3 で生成されるスコア)

これは誰にとっても見覚えがありますか?他の誰かが実際にこれらの線に沿ってアルゴリズムを作成するのに苦労したことを願っているので、自分でそれを理解する必要はありません.

0 投票する
1 に答える
658 参照

python - LSA から類似度を取得する方法

私は潜在的な意味分析に取り組んでおり、2 つのドキュメントから類似性を取得しようとしています。Python で潜在意味解析のコードを実行すると、次のようになります。

この数字からどのように類似点を見つけますか?

0 投票する
2 に答える
305 参照

nltk - 分類マッピング/マージのための WorldNet synset による基本的なテキストの類似性

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

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

0 投票する
1 に答える
1070 参照

dataset - Word2Vec のトレーニングに必要な最適または最小のデータ サイズはどれくらいですか?

サイズが 40 MB のテキスト データセットがあり、Word2Vec をトレーニングして、特定のドメインのドキュメント全体で文または段落間の類似性を見つけるために使用できるモデルを構築したいと考えています。Word2Vec が適切な結果を得るために必要なデータセットの最小サイズは?

0 投票する
1 に答える
74 参照

php - エントリの類似性に基づいて XML ファイルを結合する

PHP を使用して、異なる構造の XML ファイルを結合する必要があります。私がやっていることは次のとおりです。

  1. を使用して最初の XML ファイルを読み取りますsimplexml_load_file()
  2. SimpleXMLElement()クラスを使用して新しい構造を使用して要素を再フォーマットします
  3. SimpleXMLElement()他のファイルについても同じことを行い、最初のインスタンスをインクリメントします
  4. 新しく結合された XML ファイルを保存します。

ここまでは順調ですね。トリッキーな部分は、最初のファイルには約があります。3000 のエントリと 2 番目のファイルには 5000 のエントリがあります。これらのエントリのほぼ 2000 は実際には同じです。数文字違うだけかもしれません。たとえば、「Lenovo G50-70 CoreI5」と「Lenovo G5070 I5」かもしれません。

問題は、最初のファイルのエントリを 2 番目のファイルのエントリと一致させるにはどうすればよいかということです。実際には、新しい結合ファイルでは合計で 1 つのエントリだけになるのでしょうか?

similar_text()PHP と SmithWatermanGotoh の両方の関数を使用して類似度を計算していますが、スコアは 86% です。これで十分です。しかし、1 つのエントリだけに一致するように他のファイルのすべてのエントリを反復することは、非常に賢明ではなく、リソースを消費します。なぜなら、それは約を意味するからです。新しい更新されたファイルを保存するたびに、7 MB のファイルがメモリにロードされ、最低 15,000 回の反復が行われます。

すべてのエントリをデータベース テーブルに挿入することを検討し、Sphinx Search を使用してエントリを照合します。しかし、それが本当に十分に役立つかどうかはわかりません。

0 投票する
3 に答える
686 参照

python-3.x - 10,000件の記事から薬品名と遺伝子名を含む文章を抽出したい

10,000件の記事から薬品名と遺伝子名を含む文章を抽出したいです。そして私のコードは

記事全体から遺伝子や薬品名を含む文章を抽出したい。たとえば、「メトホルミンは、対数変換された SLC22A1 排泄を減少させました (1.5860.47 から 1.0060.52 へ、p=0.001)」。「結論として、このよく管理された研究では、SLC22A1、ACE、AGTR1、および ADD1 の研究された多型とメトホルミンに対する抗糖尿病反応との顕著な関連性を示すことはできませんでした。」

このコードは、多くの文を返します。つまり、上記の 1 つの単語が文に含まれていれば、それが出力されます...! このコードの作成を手伝ってください

0 投票する
1 に答える
31 参照

file - 各文をネストされたリストにするにはどうすればよいですか?

次のようなテキスト ファイルを使用しています。(言葉はスウェーデン語です)

さまざまな長さの約 500 の文があります。各行は 1 つの単語を表します。リストの最初の要素は、文中の単語の位置を示します。

各文のエントリからネストされたリストを作成するプログラムが必要です (各文に 1 つのサブリスト)。すべての新しい文は位置 '1' で始まり、空行で区切られます。現時点では、すべての行が 1 つのリストに含まれています。

私は次のようなことをしたいと思います:

... 次に、「1」に達するまですべての行を追加します。ここで、新しいサブリストから始めます。

それを行う方法についていくつかのアイデアはありますか?これを再帰的にするにはどうすればよいですか?