일단.. 만드는 일이 너무 품에 많이 들 것 같아 고민고민하던 어연 일주일..
일단 같은 분이 만들어놓으신 c# 버전 lexorank가 있길래 아.. 이걸 보면 되겠다.. 싶었지만 차마 만들 용기가 나지 않았다..
그러다가 소마에서 만나신 분의 조언을 듣게되는데..
오 c#이면 python 이랑 연결해서 사용할 수 있지 않나요?
그걸 듣고 냅다 적용해봅니다
brew install --cask dotnet-sdk
brew install mono
일단 git 레포를 받아주었습니다.
그리고 dll 파일로 만들어줄겁니다.
일단 받은 깃 레포 파일에 사용할 폴더로 들어갑니다..
dotnet build라는 명령어로 만들어줍니다
그러면 요 링크에 생겼다는 링크를 주는데 이걸 사용할 폴더로 옮겨줍니다 (mv 파일 옮길장소)
그리고 python 을 작성해줍니다
import clr
import os
from pythonnet import set_runtime
from pathlib import Path
from django.http import JsonResponse
# .NET 런타임 경로 설정
dotnet_root = Path("/usr/local/share/dotnet")
set_runtime(dotnet_root / "dotnet")
# C# DLL 파일 경로 설정
dll_path = Path(__file__).resolve().parent.parent / 'LexoRank.dll'
clr.AddReference(str(dll_path))
from LexoRank import LexoRank
def test_lexorank(request):
lexorank = LexoRank()
rank1 = lexorank.middle()
rank2 = lexorank.next(rank1)
return JsonResponse({
'rank1': str(rank1),
'rank2': str(rank2),
})
이렇게 작성했더니
RuntimeError: The runtime <clr_loader.mono.Mono object at 0x10315f8f0> has already been loaded
이런 에러가 뜨길래 위에 .Net 런타임 경로 설정을 삭제했다
그리고 나서 또 에러가 뜨는게
ModuleNotFoundError: No module named 'LexoRank'
이런 에러가 떠서 확인해보니..
# .NET 네임스페이스 및 클래스 로드
from LexoRankNamespace import LexoRank
이런식으로 작성하라고 해서 찾아서 실행했더니 되었다!
import clr
import os
from pathlib import Path
from django.http import JsonResponse
# 현재 파일(test.py)의 디렉토리 경로를 기준으로 DLL 파일 경로 설정
dll_path = Path(__file__).resolve().parent / 'LexoRank.dll'
# clr 모듈을 사용하여 .NET DLL 파일을 로드
clr.AddReference(str(dll_path))
# .NET 네임스페이스 및 클래스 로드
from LexoAlgorithm import LexoRank
def test_lexorank(request):
rank1 = LexoRank.Middle()
rank2 = rank1
print(rank1.CompareTo(rank2))
return ({
'rank1': rank1.ToString(),
'rank2': rank2.ToString(),
})
print(test_lexorank(None))
일단 완성된 친구
밑에 이것저것 추가하고 실험하느라 위의 코드와는 출력물이 좀 다르다
쨋든 성공했으니.. django 에 넣어서 실험해본다..!
'소프트웨어 마에스트로 > 개발' 카테고리의 다른 글
[개발] 오늘의 한 일 (1) | 2024.09.26 |
---|---|
[개발관련] Lexorank 적용기 종장 (2) | 2024.07.28 |
[개발] lexorank 적용기 1.5 (1) | 2024.07.22 |
[개발 관련] lexorank 적용기.. (0) | 2024.07.18 |
[깃허브] organization 403 에러 + 동기화 및 암호화 관련 멘토링 (0) | 2024.07.11 |