NLP를 사용하여 문법을 기준으로 비교할 문장이 두 개 있습니다. 나는 NLP에 완전히 익숙하지 않으며 이것을 결정하는 알고리즘이 있는지 알고 싶습니다. 나는 단어 유사성과 감정을 사용하여 비교하는 방법을 안다.NLP를 사용하여 두 문장 비교하기
0
A
답변
0
당신은 나중에 특정 기준
에 따라 사용할 synset을 선택할 수 있습니다, 두 문장 여기문법을 지정하지 않고도 가능한 모든 synset을을 생성하는 방법이다 사이의 유사성을 측정하기 위해 워드 넷의 synset을을 NLTK 사용할 수 있습니다 여기
import pandas as pd
import nltk
from nltk.stem.porter import PorterStemmer
from nltk.corpus import wordnet as wn
import itertools
#use stemmer
stm = PorterStemmer()
sent1 = "I like hot dogs"
sent2 = "My father's favourite food is hot dog"
#Convert the tag given by nltk.pos_tag to the tag used by wordnet.synsets
tag_dict = {'N': 'n', 'J': 'a', 'R': 'r', 'V': 'v'}
s1 = nltk.pos_tag(nltk.word_tokenize(sent1))
s1 = dict(filter(lambda x: len(x[1])>0,
map(lambda row: (row[0],wn.synsets(
stm.stem(row[0]),
tag_dict[row[1][0]])) if row[1][0] in tag_dict.keys()
else (row[0],[]),s1)))
s2 = nltk.pos_tag(nltk.word_tokenize(sent2))
s2 = dict(filter(lambda x: len(x[1])>0,
map(lambda row: (row[0],wn.synsets(
stm.stem(row[0]),
tag_dict[row[1][0]])) if row[1][0] in tag_dict.keys()
else (row[0],[]),s2)))
여기 한 방법
dogs [Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n...
hot [Synset('hot.a.01'), Synset('hot.s.02'), Synset('hot.a.03'), Synset('hot.s.0...
like [Synset('wish.v.02'), Synset('like.v.02'), Synset('like.v.03'), Synset('like...
S1 사전있는 숫자 샘플이다. 여기서는 두 단어의 가능한 모든 syn 집합 사이의 유사성을 측정 한 다음 최대 값을 취합니다.
{('dogs', 'dog'): 1.0,
('dogs', 'father'): 0.16666666666666666,
('dogs', 'food'): 0.25,
('dogs', 'is'): 0.10000000000000001,
('hot', 'hot'): 1.0,
('hot', 'is'): 0.33333333333333331,
('like', 'is'): 0.33333333333333331}
res = {}
for w2,gr2 in s2.items():
for w1,gr1 in s1.items():
tmp = pd.Series(list(map(lambda row: row[1].path_similarity(row[0]),
itertools.product(gr1,gr2)))).dropna()
if len(tmp)>0:
res[(w1,w2)] = tmp.max()
print(res)
출력 이제 우리는 문장의 각 단어가 달성 최대 유사성을 찾을 수 있습니다. 그 평균을 취
similarity = pd.Series(res).groupby(level=0).max().mean()
print(similarity)
출력 문서 유사성을 측정 할 때 .778
상기의 일반적인 방법이다. 문법을 비교하고자한다면 pos_tag와 같은 품사 태그 지정 도구 (또는 nltk.corpus.brown.tagged_words()
같은 태그가 지정된 코퍼스를 사용)를 사용하여 태그 사이의 Jaccard 거리를 찾으십시오.
+0
늦게 답장을 드려 죄송합니다. 감사합니다. 이것은 내가 필요한 것입니다. 이전에 synsets를 사용했지만 개별 단어를 비교하기 위해 synsets을 사용하여 문장을 비교하는 방법을 알지 못했습니다. –
관련 문제
- 1. NLP를 사용한 문장 교정
- 2. standford NLP를 사용하여 컨텍스트를 설명하는 문장 찾기
- 3. AS3에서 문장 (문자열) 비교하기
- 4. 두 파일을 Awk를 사용하여 비교하기
- 5. NLP를 사용하여 성별을 전환하십시오.
- 6. NLP를 사용하여 풍부한 텍스트 정보 측정
- 7. 스탠포드 nlp를 사용하여 문장의 긴장 찾기
- 8. nlp를 사용하여 문장에서 subject + 형용사를 찾아 내기
- 9. 두 배열을 array_diff와 비교하기
- 10. 자바에서 두 파일 비교하기
- 11. 다른리스트의 두 튜플 비교하기
- 12. 두 날짜를 문자열로 비교하기
- 13. JavaScript의 두 날짜 비교하기
- 14. PHP에서 두 날짜 비교하기
- 15. 두 lisp 심볼리스트 비교하기
- 16. perl에서 ne를 사용하여 두 개의 해시 비교하기
- 17. 파이썬에서 두 개의 문자열 비교하기
- 18. 두 목록을 사용하여 다른 문장 만들기
- 19. 코어 데이터의 두 NSDate 비교하기
- 20. 두 문장 사이의 계산
- 21. 스탠포드 NLP를 사용하여 문장 (CoreMap)에서 토큰 (CoreLabel)을 바꾸는 방법은 무엇입니까? 평소처럼
- 22. NLP를 사용하여 간단한 설명을 처리하는 방법
- 23. mysqldump와 두 개의 데이터베이스 비교하기?
- 24. 다른 테이블의 두 필드 비교하기
- 25. 두 행의 각 값 비교하기
- 26. 하스켈에서 두 개의 문자열 비교하기
- 27. Python을 사용하여 목록 비교하기?
- 28. NLP를 사용한 문법 검사
- 29. 스택을 사용하여 문장 검색하기
- 30. nlp를 사용하여 NER 모델을 사용자 정의하는 방법
"문법을 기준으로 비교하십시오" 좀 더 자세히 설명해 주시겠습니까? 어쩌면 예를 들어? –
"나는 핫도그를 좋아해요" "내 아버지가 좋아하는 음식은 핫도그"라고 가정 해 봅시다. 이제이 두 문장을 NLP를 사용하여 문법의 측면에서 얼마나 유사한 지 비교하고 싶습니다. –
정확히 무엇이 필요한지 나에게 명확하지 않다. 얼마나 많은 동사가 있는지 비교해 보라. 또는 일반적인 형용사? 또는 의존성 분석 구조, 얼마나 일반적인 구조입니까? –