jisungyoon / Structure-of-Science

Science of Science, Collective Intelligence
2 stars 0 forks source link

language title 매칭 이슈 #6

Closed jisungyoon closed 5 years ago

jisungyoon commented 5 years ago

한국 위키 -> 미국 위키 미국 위키 -> 한국 위키 를 잇는 데이터를 처리하는 중에 몇 이슈가 있어서 공유드립니다. 어떻게 처리하는 것이 좋을 지 의견주시면 감사하겠습니다.

  1. 한국에서 영어로 잇는 문서를 보면 Ruby_(disambiguation) 와 같이 뒤에 플래그를 가지고 있는 링크들이 있습니다. disambugation 에 관련한 문서를 보면

Naming articles in such a way that each has a unique title. For example, three of the articles dealing with topics ordinarily called "Mercury" are titled Mercury (element), Mercury (planet) and Mercury (mythology).

이렇게 한가지 단어가 여러 의미를 가지고 있을 때 쓴다고 합니다. 이를 하나하나 매칭하게 되면 매우 수작업이 될 것 같아서 어떻게 좋을까요?

  1. 영어에서 한국으로 잇는 문서중 보면 bottleneck -> 병목(공학) 이렇게 연결되어 있는데 병목(공학) 이라는 문서는 없고 병목 이라는 문서는 존재합니다. 이 경우에는 어떻게 처리해야할까요?

의견주시면 감사하겠습니다.

bluekura commented 5 years ago

휴가중이라 내일 확인하고 답변드리겠습니다 :)

2018년 12월 4일 (화) 오후 12:47에 balla2081 notifications@github.com님이 작성:

Assigned #6 https://github.com/balla2081/Structure-of-Science/issues/6 to @bluekura https://github.com/bluekura.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/balla2081/Structure-of-Science/issues/6#event-2003214306, or mute the thread https://github.com/notifications/unsubscribe-auth/AZDpXNI8l5gXox2WV6oYiMuuK1rxam0Jks5u1fA2gaJpZM4Y_3Wz .

bluekura commented 5 years ago

역시나 동음이의어 구분 문제는 어렵군요...

  1. 먼저 직접 데이터를 다루는게 윤지성선생님이기 때문에 실제로 본인이 다룰 수 있는 난이도인지, 규모인지를 고려해서 제가 하는 말을 적절히 판단해주셔야 한다는 점을 말씀드립니다.

  2. 가장 쉽고 과격하며 큰일날 방법은 그냥 그런 동음이의어를 다 제외하는 방법인데, 이건 정말 최후에 생각하고 절대 왠만하면 안해야 할 방법으로 생각됩니다.

  3. 다른 방법으론 아래의 논문같은 데에서 사용하는 아티클의 "그룹"을 만드는 방법을 쓸 수 있습니다. https://epjdatascience.springeropen.com/articles/10.1140/epjds/s13688-016-0070-8 예를 들어서, 아래와 같은 링크 구조가 있다고 했을때 A-B-A'을 모두 같은 것으로 취급하는 것이지요. A(한국어) - B(영어) B(영어) - A'(한국어) 나쁘지 않은 방법이긴 하고, 이미 다른 저자들에게 쓰인 방법이기도 합니다. 어제 카톡으로 말씀하신 (disambugation)이라는걸 떼고 볼까요 라는 말과 일맥상통 하는 방법으로 생각하는데 이것도 정보를 상당히 지우겠죠 아마도.

  4. 가장 좋은 방법은 이미 구분되어있는 아주 좋은 데이터를 쓰는 방법입니다. 사실 제가 이 데이터가 있는 것을 잊고 있었습니다... 미안합니다 -_-; 카테고리 구조는 개별 위키의 것을 사용하되, language link의 경우는 wikidata를 의존하는것이 어떨까 싶습니다. 예를 들어서 physics 라는 항목을 보면 아래의 Q413이라는 wikidata에서 사용하는 ID가 나옵니다. https://www.wikidata.org/wiki/Q413 이 Q** 값을 가지고 각 국가별 항목을 매칭하는 것이 가능합니다.

  5. 4번의 방법을 쓰시려면 아래의 두 링크를 참조해 데이터를 구하시면 될 것 같습니다. 크게는 API로 조회하는 방법이 있고, dump를 받는 방법이 있습니다. dump는 json으로 제공하니 쓰기 편할거라 생각합니다. https://www.wikidata.org/wiki/Wikidata:Database_download https://www.wikidata.org/wiki/Wikidata:Data_access

윤진혁 드림.

jisungyoon commented 5 years ago

이렇게 데이터를 처리하려고 합니다.

Case 1: disambugation과 같은 문제를 해결하기 위해서는 케이스 별로 다 읽어보고 분류를 해야합니다. 따라서 이 케이스는 배재하려고 합니다.

Case 2: 확인해본 결과 원래는 병목_(공학)이라는 문서가 있었는데 병목이라는 페이지로 대체된 것 같습니다. 이는 데이터의 싱크문제로 생각되며, 이 역시도 따로 처리하기에는 문제가 있을 것으로 판단됩니다. 전체 40만개의 링크 중 573개 정도가 이에 해당됩니다.

지금은 우선 Language Link의 source 와 destination 이 모두 네트워크에 있는 경우에만 고려하고 있습니다.

동의어 집단을 다 처리한 결과 연결과는 다음과 같습니다. (x,y), x: 한국 동의어 집단의 갯수 y: 영어 동의어 집단의 갯수

Counter({(1, 1): 397338, (1, 2): 5924, (1, 3): 23, (1, 4): 3, (2, 1): 1664, (2, 2): 341, (2, 3): 10, (2, 4): 1, (3, 1): 1, (3, 2): 4, (3, 3): 3})

생각보다 동의어의 관계가 복잡하지 않아서 다행입니다. 코멘트 있으면 알려주시면 감사하겠습니다.

wsjung77 commented 5 years ago

Case 2는 수작업 하신다는 건가요?

jisungyoon commented 5 years ago

아니요. 한국-영어만 한다면 수작업이 가능할 것 같지만 다른 언어까지 합치면 너무 방대해서 배재하려고 합니다.

wsjung77 commented 5 years ago

그럼 (1,1) 외에는 다 버린다는 건가요? 정확히 이해가 안 되어서...

jisungyoon commented 5 years ago

아닙니다. 밑의 분석은 Case1, Case2를 다 제외한 후 데이터로 동의어 집단을 찾은 것입니다. picture1 그림과 같은 관계에 대한 숫자입니다.

wsjung77 commented 5 years ago

got it

bluekura commented 5 years ago

전체 40만개의 링크 중 573개 정도가 이에 해당됩니다.

  1. 이정도면 뭐 무시가능한 수준이긴 한데, 모든 언어 쌍에 대해서 이 stat이 있어야 할 겁니다.

  2. Q***의 Wikidata 자료는 이 문제가 없긴 할텐데... (아래의 그룹별로 묶는 문제도 발생 안할거구요) image

wsjung77 commented 5 years ago

wikidata로 진행하자는 말씀이시죠?

bluekura commented 5 years ago

넵. 매칭이슈는 확실히 wikidata쪽이 나을 것 같습니다.

다만 커버리지가 얼마나 괜찮을지는 모르겠습니다... 모든 언어 위키백과의 모든 category/article에 unique identifier를 부여했을 것 같지는 않아서요.

일단 데이터도 문제지만 유사도 measure가 제대로 작동하는지를 보아야 하니, 그제 미팅해서 일단 윤지성선생님이 한국어-영어를 langlinkdata(기존에 쓰던 데이터)로 진행하시면서 wikidata데이터 특성을 좀 보기로 했습니다...

jisungyoon commented 5 years ago

Wikidata의 데이터를 조금씩 뜯어보고 있는데, 모든 링크들이 다 걸린 것은 아닌 것 같습니다. https://www.wikidata.org/wiki/Q6642645 의 경우에 보면 타겟 언어인 이탈리아어나 네덜란드어로는 링크가 없는 것을 확인 할 수 있습니다.

만약 쓴다면 두 곳의 데이터를 섞어쓰거나 해야할 것 같습니다.

bluekura commented 5 years ago

직접 페이지에 들어가서 다른 언어들을 보니 실제로 네덜란드나 이탈리아어가 카테고리 페이지에 분야별 과학이 없는 것 같습니다.

제가 못찾은건지 확인해보고,

실제로 없다면 이탈리아어나 네덜란드어의 루트 노드를 어떤것으로 해야 할 지 고민 해봐야겠네요....

2018년 12월 8일 (토) 오후 6:54에 balla2081 notifications@github.com님이 작성:

Wikidata의 데이터를 조금씩 뜯어보고 있는데, 모든 링크들이 다 걸린 것은 아닌 것 같습니다. https://www.wikidata.org/wiki/Q6642645 의 경우에 보면 타겟 언어인 이탈리아어나 네덜란드어로는 링크가 없는 것을 확인 할 수 있습니다.

만약 쓴다면 두 곳의 데이터를 섞어쓰거나 해야할 것 같습니다.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/balla2081/Structure-of-Science/issues/6#issuecomment-445447096, or mute the thread https://github.com/notifications/unsubscribe-auth/AZDpXM_iB7oZhxZktKkplBeoV8oXrtxSks5u24xQgaJpZM4Y_3Wz .

bluekura commented 5 years ago
bluekura commented 5 years ago

그런데 곰곰히 생각해보면, 이번 연구에서 우리가 "분류"를 이용하는게 학문의 구조라던지 인간의 생각하는 구조의 차이를 보고싶다는 의도에서 시작한 것이라면, 꼭 이것이 "과학의 하위분류"에 한정될 이유가 있을까 싶긴 합니다.

그런 측면에서 보자면 차라리 저런 점을 고려하고 Science의 모든 하위구조를 본다 라는 형태로 진행하는 것은 어떨까요.

윤진혁 드림.

덧//사실 이렇게 다른 것도 나름 재밌는 점이 아닐까 싶긴 하네요. 이탈리아어 화자가 다른 언어 화자와 분명히 다르게 학문 구조를 보고 있는 느낌이라...

jisungyoon commented 5 years ago

그럼 박사님 말씀은 Science라는 노드의 subnetwork 를 보는 방법을 이야기하시는건가요?

jisungyoon commented 5 years ago

Scientific discipline를 root node 로 정했던 이유 중 하나는, 왠만한 학문적 노드들이 subnetwork에 다 들어와서 진행을 한 것도 있습니다.

그리고 아마 한국와 미국 위키의 경우 science를 root node로 두면 Scientific disciplines이 하부노드로 나왔던 거롤 기억합니다.

jisungyoon commented 5 years ago

그리고 wikidata 기준으로 우선 저희의 타겟 위키 20개 중 6개의 언어가 Scientific disciplines 과 대응하는 노드를 가지고 않은 것으로 나와있습니다.

우선 language-link 기준으로도 다시 확인하고 있습니다.

jisungyoon commented 5 years ago

Launugage link 기준으로 확인해본 결과 66개 나라가 가지고 있군요. 타겟인 20개의 나라에도 6개의 언어가 매칭이 되지 않는 것을 확인하였습니다.

bluekura commented 5 years ago

결국 기존의 Scientific disciplines을 쓰는 방법은 힘들 것 같네요 Science와 Scientific disciplines이 모두 있는 14가지의 경우 Scientific disciplines이 science의 subnode로 나오는지 확인해보실 수 있나요?

jisungyoon commented 5 years ago

잊고 있던 것이 있었군요. Scientific_discipline는 보통 Science를 refer하고 잇습니다. 그래서 하지만 Scientific_discipline의 하부 노드에서도 발견이 됩니다. Cycle이 존재하는 거죠. 그래서 데이터 전처리 방식에서 Scientific_discipline가 refrer하고 있는 노드를 지움으로써 cycle을 제거 했던 것으로 기억되네요.

그리고 Science와 같은 경우 하부에 있는 노드들이 잘 정리가 안되있어, 저희가 생각하는 지식구조와도 잘 맞는 것인지 의문이가네요

jisungyoon commented 5 years ago

20개의 나라중 메칭이 안되는 언어는 다음과 같습니다. (순서는 view per hour 기준입니다I Italian Dutch Czech Swedish Hungarian Finnish

bluekura commented 5 years ago

우리가 보고 싶은게 실제의 "지식"의 구조인지, 아니면 지식에 대한 "인지"의 구조인지에 대해서 조금 명확히 할 필요가 있습니다. 두가지는 약간 다르다고 봅니다.

제 개인적인 입장에서는

  1. 지식구조 != 인지구조 이고, 인지구조는 지식구조보다 넓은 범위를 포괄한다고 봅니다.

  2. 지식구조 != 과학기술 구조 이고, 과학기술 지식 구조는 지식의 극히 일부만을 포괄하다고 봅니다.

  3. 위키백과가 표현하는게 실제로 그 나라의 과학기술 구조인지, 아니면 사람들이 인지하는 과학기술의 구조인지에 대해서 생각해보면, 사실은 사람들이 인지하는 과학기술의 구조에 가깝다고 생각합니다. 이게 절대적인 과학기술의 구조를 나타내는게 아니라는거죠.

  4. 사실 과학기술의 절대적인 구조란 말이 애매하긴 합니다... 미국의 과학기술 구조는 한국과 다른가 라고 하면, 사실 그렇다고 생각하지는 않습니다.

  5. 그럼 이 부분에서 우리가 보고자 하는게 뭐냐 라면 이런 예를 들 수 있겠죠. (실제의 예는 아니지만) 한국에서는 주로 CS가 공대쪽으로 분류되어 있는데, 프랑스에서는 자연과학-수학 쪽으로 분류되어 있다던지 (이건 제가 있던 대학의 바로 옆 대학 한개의 예라서 절.대.로. 이렇다는건 아닙니다.)

  6. 말이 좀 길었는데, 요약을 하자면 위키백과를 통해 우리가 보고싶은건 그 언어의 화자, 더 나아가서 그 국가의 화자들이 과학기술의 구조를 인지하는 형태를 보고 싶은 것이라 봅니다. 그런 면에서 하부 노드가 잘 정리되어 있는게 방법론적인 측면 말고 문제를 푸는 "답"을 준다는 측면에서 꼭 필요한 일일까 잘 모르겠습니다. 의견 부탁드립니다.

jisungyoon commented 5 years ago

위키가 인지하는 과학기술의 구조를 반영한다는 점은 동의합니다. 그런 점에서 Science 밑의 구조를 보는 것은 도움이 될 것 같습니다.

하지만 기술적으로 Science Disciplie가 있는 있는 위키와 없는 위키는 본질적으로 다른 구조를 가지고 있기에 같은 처리 방법으로 보는 것은 위험할 수도 있을 것 같다고 생각이 듭니다.

미국, 한국의 경우에는 Science Disciplie를 지우는 방식으로 데이터를 처리하면 기본의 구조보다는 복잡하지만, 방법론을 그대로 쓸 수 있을 것 같기는 합니다.

jisungyoon commented 5 years ago

우선 한국 위키를 대상으로 네트워크를 만든 뒤 살펴보고 진행해도 될 것 같습니다.

bluekura commented 5 years ago

크게 보면 두가지가 가능하겠네요

  1. 기존의 방법론을 유지하되 Scientific Discipline이 있는 언어만 사용한다

  2. 기존의 방법론을 약간 변형해서 전체를 사용한다.

여기서 질문. 2를 택한다면 Scientific Discipline을 "꼭" 지워야 하나요? 본질적으로 다른 구조라는 것도 의미가 있지는 않을지...?

bluekura commented 5 years ago

꼭 지워야 되는지를 판단하려면 일단 네트워크를 만들어보는게 좋을 것 같습니다.

둘 모두 Science를 루트 노드로 놓되

  1. Scientific Discipline을 지우고 만든 버전
  2. Scientific Discipline을 유지하고 만든 버전

이 2가지를 보고, 각각의 문제점과 장점을 좀 확인해보죠 @wsjung77 교수님도 동의하시는지요?

jisungyoon commented 5 years ago

일단은 한국의 네트워크가 제일 다루기 쉬우니, 한국으로 진행해보겠습니다.

bluekura commented 5 years ago

이건 여담이지만 GitHub으로 옮긴게 참 좋네요. 이것저것 기록도 편하고, 논의도 편하고... -_-;

wsjung77 commented 5 years ago

latex 공유도 되고 말이죠.

wsjung77 commented 5 years ago

동의하나이다.

jisungyoon commented 5 years ago

아 잊고 있던 것이 있었습니다. 위키에는 Category:Main topic classifications 이라는 노드가 있고, 한국에서는 '과학기술' 이렇게 같은 선상에서 관리하고 있고 , 미국에서는 'science'와 'technology' 이렇게 따로 보고 잇습니다. 한국의 '과학'은 '과학기술'의 하부 노드로 분류되어 있습니다.

bluekura commented 5 years ago

미국은 Category:Main topic classifications -> Science 이 구조이고 한국은 Category:Main topic classifications -> SnT -> Science 이 구조라는 말씀이시죠?

jisungyoon commented 5 years ago

bluekura commented 5 years ago

Science부터 간다면 큰 문제는 없지 않을까요? Category:Main topic classifications 이것도 보니 66개 국가밖에 없고, Science는 대부분의 국가에 있고...

wsjung77 commented 5 years ago

미국: S와 T가 따로 있는데 한국: S&T 밑에 S와 T가 각각 잇다는 건가요? 아니면 T는 이 이름이 아니라 다른 여럿의 분류로 존재하는 건가요?

bluekura commented 5 years ago

미국은 Category:Main topic classifications -> Science .......................................................................................-> Technology 한국은 Category:Main topic classifications -> SnT -> Science 이 구조라는 말씀이시죠? ......................................................................................................-> Technology

bluekura commented 5 years ago

이 구조인 것 같네요...;

jisungyoon commented 5 years ago

넵 맞습니다

jisungyoon commented 5 years ago

왠지 Scientif_discipline이라는 노드가 없는 위키의 경우에는, 기존의 위키 구조(미국)를 따라가지 않는 나라인 것 같네요. 다른 분류노드들도 없는걸 보니..

bluekura commented 5 years ago

모든 언어에 Science와 Technology가 있다는 가정 하에

  1. 가상의 "최상위 루트노드"를 (이게 SnT이든, Main topic classificaiton이든 상관없이)만들고,
  2. 그 아래 branch로 science와 technology 라는 2가지 갈래로 나뉘고,
  3. 그 아래는 기존 분류 사용. 이건 어떨까요

그림으로 그리자면

[Root Node] -> Science -> ...
            -> Technology -> ... 이 형태. 
wsjung77 commented 5 years ago

markdown 사용 권장. :)

jisungyoon commented 5 years ago

박사님 말씀이 이렇게 맞는가요?

S&T가 있는 위키의 경우는 S&T를 root node로 두고 네트워크를 구축

S&T가 없는 위키의 경우는 Sciecne와 Technology를 묶는 가상의 root node를 만든 후 네트워크 구축

bluekura commented 5 years ago

@balla2081 있더라도 그 하위노드에 science / technology 이외의 것이 있다면 그건 제거해야겠죠?

@wsjung77 찾아보니 github markdown은 flowchart류가 다 안되어서... 다른 방법을 좀 찾아보겠습니다.

wsjung77 commented 5 years ago

scientific discipline은 이슈를 따로 떼어서 진행했다가 나중에 합치든지 그냥 별개로 두든지 하는 게 좋겠습니다.

wsjung77 commented 5 years ago

@bluekura 참고로 제가 대학 입학할 즈음이, 자연대에 있던 CS가 공대에 있던 CE로 통합되던 시기이죠. 연세대는 이미 통합된 뒤였고, 서울대는 제가 3학년 때? 그래서 자연대 계산과학과로 입학한 친구들이 강제로 공대 컴퓨터공학과로 적이 바뀐...

  1. 그럼 이 부분에서 우리가 보고자 하는게 뭐냐 라면 이런 예를 들 수 있겠죠. (실제의 예는 아니지만) 한국에서는 주로 CS가 공대쪽으로 분류되어 있는데, 프랑스에서는 자연과학-수학 쪽으로 분류되어 있다던지 (이건 제가 있던 대학의 바로 옆 대학 한개의 예라서 절.대.로. 이렇다는건 아닙니다.)
bluekura commented 5 years ago

@wsjung77 그 유명한 군대를 다녀오니 과가 없어졌어요... 인가요?

wsjung77 commented 5 years ago

@bluekura 친구가 산업기능 마치고 돌아오니 학과가 없어졌는데, 당시 학부제여서 학과 배정 전에 산업기능을 시작한 상태라... 배정받았으면 공대 소속으로 옮겼을텐데, 완전 공중에 붕 뜬 친구가 하나 있었죠. 다른 친구들은 학과 배정 이후 벌어진 일이라서 공대로 옮겼고요.

bluekura commented 5 years ago

@wsjung77 역시 어떤 제도의 변화든 피해자를 낳는군요... -_-;;;;;;;;;;; 그러고보니 저 CS일화에서 재밌었던건

  1. 한국 공대에 비해서 프랑스는 알고리즘 + 이산수학 + 선형대수학 등의 기초 교육 비율이 매우 높고 (전체 수업중의 반정도가...)
  2. 프로젝트 기반 수업들을 제외한 수업에서는 실제 코딩을 거의 안하고 졸업한다더군요. 물론 저또한 백그라운드가 CS가 아니라서 한국의 CS도 생소하지만, 거의 (응용)수학과에 가까운 수업을 하는 것을 듣고 놀랐던 기억이 납니다.
wsjung77 commented 5 years ago

@bluekura 그보다는 원래 대학이 학생들 신경을 별로 안 써서... 말로만 그러죠. 학생들을 위한다면서 알고 보면 그건 핑계와 명분일 뿐. 매번 새롭게 시도하는 강의나 학사 조직/제도 변경을 통해 대학은 몇 년에 걸쳐 학습해 나가겠지만, 학생은 평생 그 수업을 한 번 듣고, 학교도 딱 그 해에 그 학년을 다니는 거라... 희생양이 되는 거라 봐야 하죠.