[Python 자연 언어 처리] 중국어 단어 기술 - 규칙 단어
14395 단어 Python 자연 언어 처리nlp자연 언어 처리
본 고 는 서적 인 을 참고 하여 개인의 학습 노트 와 공 유 를 한다.
1. 규칙 단어
규칙 분 사 는 기계 적 인 단어 방법 으로 사전 을 유지 하고 절 분 된 문 구 를 사용 할 때 문장의 모든 문자열 과 어휘 표 의 단 어 를 하나씩 일치 시 키 면 절 분 됩 니 다. 찾 지 못 하면 절 분 됩 니 다.구체 적 으로 는 정방 향 최대 정합 법, 역방향 최대 정합 법 과 쌍방 향 최대 정합 법 을 포함한다
1.1 정방 향 최대 정합 법
1.1.1 알고리즘 설명
① 왼쪽 에서 오른쪽으로 절 분 된 중국어 문장의 m 문 자 를 일치 필드 로 하고 m 는 기계 사전 에서 가장 긴 단어의 문자 수 이다.② 기계 사전 을 찾 아 일치 시 킵 니 다.일치 하 는 데 성공 하면 이 일치 하 는 필드 를 단어 로 구분 합 니 다.일치 하지 않 으 면 이 일치 하 는 마지막 글 자 를 제거 하고 나머지 문자열 은 새로운 일치 필드 로 다시 일치 합 니 다.③ 모든 단 어 를 자 를 때 까지 상기 과정 을 반복 한다.
1.1.2 알고리즘 실현
#
class MM(object):
def __init__(self, dic_path):
self.dictionary = set()
self.maximum = 0
with open(dic_path, 'r', encoding='utf8') as f:
for line in f:
line = line.strip()
if not line:
continue
self.dictionary.add(line)
if len(line) > self.maximum:
self.maximum = len(line)
def cut(self, text):
result = []
size = self.maximum
text_len = len(text)
while text_len > 0:
word = text[0:size]
while word not in self.dictionary:
if len(word) == 1:
break
word = word[0:len(word) - 1]
result.append(word)
text = text[len(word):]
text_len = len(text)
return result
if __name__ == '__main__':
text = " "
tokenizer = MM('dic.utf8')
print(tokenizer.cut(text))
주: dic. utf 8 파일 은 사용자 정의 사전 파일 입 니 다. 이 사전 은 어 휘 를 포함 합 니 다. 난 징 시 난 징 시장 장강 대교 인명 해방군 대교
1.2 역방향 최대 정합 법
1.2.1 알고리즘 설명
① 처 리 된 문서 의 끝 에서 부터 스 캔 ② 를 일치 시 킵 니 다. 맨 끝 i 문자 (i 는 사전 에서 가장 긴 단어) 를 일치 하 는 필드 로 사용 합 니 다. 일치 하 는 데 실패 하면 일치 하 는 필드 의 맨 앞 에 있 는 글 자 를 제거 하고 계속 일치 합 니 다.일치 하면 필드 를 저장 합 니 다. 사용 하 는 단어 사전 은 역순 사전 이 고 모든 단 어 는 역순 으로 저 장 됩 니 다.③ 실제 처리 할 때 문 서 를 역순 문서 로 역 배열 처리 할 수 있다.그리고 역순 사전 에 따라 역순 문 서 를 정방 향 최대 일치 법 으로 처리 하면 됩 니 다.
중국어 에서 편정 구조 가 비교적 많 기 때문에 뒤에서 앞으로 일치 하면 정확 도 를 적당 하 게 높 일 수 있다.따라서 역방향 최대 정합 법 은 정방 향 최대 정합 법보 다 오차 가 적다.통계 결과 에 따 르 면 단순 사용 정방 향 최대 일치 오류 율 은 1 / 169 이 고 단순 사용 역방향 최대 일치 오류 율 은 1 / 245 이다.
1.2.2 알고리즘 실현
#
class IMM(object):
def __init__(self, dic_path):
self.dictionary = set()
self.maximum = 0
with open(dic_path, 'r', encoding='utf8') as f:
for line in f:
line = line.strip()
if not line:
continue
self.dictionary.add(line)
if len(line) > self.maximum:
self.maximum = len(line)
def cut(self, text):
result = []
index = len(text)
while index > 0:
word = None
for size in range(self.maximum, 0, -1):
if index - size < 0:
continue
piece = text[(index - size):index]
if piece in self.dictionary:
word = piece
result.append(word)
index -= size
break
if word is None:
index -= 1
return result[::-1]
if __name__ == '__main__':
text = " "
tokenizer = IMM('dic.utf8')
print(tokenizer.cut(text))
1.3 양 방향 최대 정합 법
1.3.1 알고리즘 설명
정방 향 최대 일치 법 으로 얻 은 단어 결과 와 역방향 최대 일치 법 으로 얻 은 결 과 를 비교 하여 최대 일치 원칙 에 따라 단어 수 를 가장 적 게 자 른 것 을 결과 로 한다.
양 방향 일치 법 이 광범 위 하 게 응용 되 고 있다. SunM. S. 와 Bejamin K. T. (1995) 의 연구 에 따 르 면 중국어 에서 90.0% 정도 의 문장 은 정방 향 최대 일치 법 과 역방향 최대 일치 법 이 완전히 일치 하고 정확 하 며 약 9.0% 의 문장 두 가지 절 분 방법 만 얻 은 결 과 는 다 르 지만 그 중 하 나 는 정확 하 다 (잘못된 의미 검출 성공).1.0% 미 만 의 문장 만 있 습 니 다. 정방 향 최대 매 칭 법 과 역방향 최대 매 칭 법의 절 분 을 사용 하 는 것 은 겹 치 는 것 이 잘못 되 었 거나 정방 향 최대 매 칭 법 과 역방향 최대 매 칭 법 은 절 분 이 다 르 지만 둘 다 잘못 되 었 습 니 다 (잘못된 의미 검출 실패).
2. 통계 분사
통계 분사 의 상세 한 필기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Amazon SageMaker에서 지식 증류를 사용하여 소규모 언어 모델 교육이 기사에서는 언어 모델과 지식 증류에 대해 알아봅니다. Amazon Sagemaker 컴퓨팅 리소스의 도움을 받아 학생 모델에 대한 작업별 지식 추출을 수행합니다. 이러한 변압기 모델은 크게 세 가지 등급으로 분류...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.