문장에서 단어를 추출하고 각 연설의 어떤 부분을 결정할 수 있습니까? [닫은]


19

나는 문장을 취하고 그 단어에 포함 된 각 단어를 식별하고 각 단어의 음성 부분을 정의하는 무언가를 쓰고 싶습니다.

예를 들어

안녕하세요 세계, 나는 문장입니다

이것을 반환합니다

verb noun, pronoun verb adjective noun

이상적으로, 나는 결국 한 걸음 더 나아가 문장을 취하고 프로그래밍 방식으로 해석하려고하는 것을 이해하고 그것에 대해 무언가를하고 싶습니다.

그래서 제 질문은 누군가 이런 것을 들었습니까?


2
"안녕하세요"는 동사인가요? 나는 그것이 무엇인지 알지 못하지만 동사처럼 보이지는 않습니다.
Dan Ray

@ DanRay : 아마도 그것이 english.stackexchange.com에 대한 질문입니까?
StriplingWarrior

1
@ DanRay 하하, 알 겠어? 그래서 무언가 할 수 있는지 알아 내려고 노력하는 이유는 분명히 문법에 끔찍한 일입니다.
Vinny

@Vinny-물론 가능합니다. 문제는 ... 이것은 다음 조 달러 아이디어이며 현재로서는 여전히 제품으로 만들어지지 않았습니다.
Ramhound

1
@Vinny 네, 누군가 그런 말을 들었습니다.
Tulains Córdova

답변:


18

이것을 자연어 처리 라고 하며 매우 복잡한 분야입니다. 당신이 묘사 한 것은 기념비적 인 업적이며 Watson 과 같은 최고의 솔루션조차도 완벽하지 않습니다.

이 같은 상황은 도전합니다 "버팔로 버팔로 버팔로 버팔로 버팔로 버팔로 버팔로 버팔로"

미국식 영어로 된 문법적으로 정확한 문장으로, 복잡한 언어 구조를 만들기 위해 동음 이의어와 호모 폰을 사용하는 방법의 예로 사용됩니다. 그것은 1972 년부터 문학에서 논의되었습니다. 그것은 또한 스티븐 핑커 (Steven Pinker)의 1994 년 책 " The Language Instinct "에서 "겉보기에 무의미하지만"문법적인 문장의 예로써 소개되었습니다.

이 문장의 의미는 뉴욕 버팔로시와 "버팔로"( "버팔로"또는 "괴롭히다 또는 협박하다")라는 어구를 사용하고 문장 부호와 문법이 확장되어 문장이 표현 될 때 이해됩니다 "버팔로 버팔로 버팔로 버팔로 버팔로 버팔로 버팔로 버팔로 버팔로." 동의어가 사용될 때 그 의미는 더욱 명확 해집니다. "버팔로 들소는 다른 버팔로 들소가 스스로를 괴롭히는 버팔로 들소입니다."


1
이것이 내가 찾고있는 것입니다! 누구든지 이것을 더 작은 규모로 적용한다고 들었습니까? 오픈 소스? 더 작은 규모로 사용되는 예는 무엇입니까?
Vinny

@Vinny AFAIK는 이러한 문제를 해결하는 것이 MS Word 문법 탐지와 같은 회사에서 수익성이 높기 때문에 오픈 소스에서 사용할 수있는 것은 없습니다. 그래도 믿을 수있는 몇 가지 채팅 프로그램이 있습니다.
Ryathal

1
@Vinny 그것은 어려움과 규모와 관련이 없습니다. 자연어 처리에는 "규모"를 줄일 때 줄지 않는 고유 한 복잡성이 있습니다.
Tulains Córdova

6

첫 번째 문제를 해결하면서 문장을 나누고 문법의 정확성을 결정하는 것이 두 번째 문제보다 쉬우지만, 동사 명사 나 수영, 프로그래밍 등과 같은 복잡성과 같은 많은 복잡한 문제는 여전히 어려운 과제입니다. 대답.

그러나 두 번째 문제는 - 사람들이 완벽한 해결책을 찾기 위해 엄청난 노력에 넣어,하지만 정말 완벽한 "해석"알고리즘이 실현 실질적으로 영어와 같은 모든 자연 언어에 대한 아니다 - 변화가있는 알고리즘을 망치는. 이 분야-인공 지능, 컴퓨터 과학 및 언어학의 하이브리드는 NLP 로 알려져 있습니다 . 다음을 고려하십시오 : 문장을 "통역"할 때 Google Translate도 완벽하지 않습니다.

그럼에도 불구하고 이것은 매우 흥미로운 분야입니다.


@StriplingWarrior 방금 OP가 제기 한 두 가지 문제를 충분히 대조하고 싶었습니다. 유명한. 가는 길에 편집
yati sagade

4

이 Wikipedia 기사를 읽어야한다고 생각합니다.

http://en.wikipedia.org/wiki/Part-of-speech_tagging

(연구 분야이므로 쉬운 해결책을 기대하지 마십시오.)


2
NLP는 오늘날의 컴퓨터에서는 거대하고 단단하며 어려울 수 있지만 POS 태깅은 가장 쉬운 부분이며 충분한 코퍼스 크기 또는 많은 헌신과 수동 규칙 작성으로 거의 완벽하게 해결할 수 있으며, 확실히 99 % 이상의 정확성. 그것은 당신의 필요에 충분할 것입니다.
Kilian Foth

고마워요, 이것도 내가 찾던 것입니다.
Amc_rtty 2016 년

제대로 @KilianFoth 관찰을 실제로 영업 이익의 설명에 따라이 허용 대답을해야한다
Amc_rtty

-1

이것을하는 가장 저렴한 방법은 사전 데이터베이스를 설정하는 것입니다 (나는 누군가가 이것을 한 것에 대해 거의 긍정적입니다).

테이블에 두 개의 필드가 필요 word하고usage

문구를 문자열 배열 (각 단어는 문자열 임)로 독립적으로 전환하십시오.

select 'usage' from Dictionary WHERE 'word' = $word; 

그것은 무거운 솔루션이지만 과거에 사용한 적이 있습니다.


5
이것은 각 단어에 가능한 POS가 하나만 있다고 가정하며 전혀 그렇지 않습니다.
microtherion

동의-문맥에 따라 명사, 동사 등의 역할을 할 수있는 모든 단어를 사용하여 (적어도 영어로) 작동 할 수있는 방법은 없습니다.
Derek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.