"""
著作權所有 (C) 民國102年 意傳文化科技
開發者：薛丞宏
網址：http://意傳.台灣
語料來源：請看各資料庫內說明

本程式乃自由軟體，您必須遵照SocialCalc設計的通用公共授權（Common Public Attribution License, CPAL)來修改和重新發佈這一程式，詳情請參閱條文。授權大略如下，若有歧異，以授權原文為主：
	１．得使用、修改、複製並發佈此程式碼，且必須以通用公共授權發行；
	２．任何以程式碼衍生的執行檔或網路服務，必須公開該程式碼；
	３．將此程式的原始碼當函式庫引用入商業軟體，且不需公開非關此函式庫的任何程式碼

此開放原始碼、共享軟體或說明文件之使用或散佈不負擔保責任，並拒絕負擔因使用上述軟體或說明文件所致任何及一切賠償責任或損害。

臺灣言語工具緣起於本土文化推廣與傳承，非常歡迎各界用於商業軟體，但希望在使用之餘，能夠提供建議、錯誤回報或修補，回饋給這塊土地。

感謝您的使用與推廣～～勞力！承蒙！
"""
from 剖析相關工具.剖析結構化工具 import 剖析結構化工具
from 剖析相關工具.剖析工具 import 剖析工具
from 候選句.交叉二維揣候選句 import 詞相關評價
from 閩南資料.國閩字詞翻譯 import 字音結構化
from 候選句.交叉二維揣候選句 import 交叉二維揣候選句
from 候選句.建立候選句佮對應句關係 import 建立候選句佮對應句關係
from 候選句.建立候選句佮對應句關係 import 提出對照位置
from 候選句.建立候選句佮對應句關係 import 調整對照
from 候選句.建立候選句佮對應句關係 import 候選句佮對應句對照

class 翻譯整合:
	工具 = 剖析工具()
	結構化工具 = 剖析結構化工具()
	揣候選句工具 = 交叉二維揣候選句()
	def 國閩翻譯(self, 待翻句):
		if isinstance(待翻句, list):
			return [self.國閩翻譯(句) for 句 in 待翻句]
		print(待翻句)
		翻譯句結構化結果 = self.結構化工具.結構化剖析結果(待翻句)
		印出 = lambda 型體佮詞性語意:print(型體佮詞性語意[0], end=' ')
	
		挑出分數懸的 = []
		for 剖析結果字串 in self.揣候選句工具.揣剖析資料:
	# 		print(剖析結果字串)
			結構化結果 = self.結構化工具.結構化剖析結果(剖析結果字串[3])
			分數, 配對, 選到的細配對 = self.揣候選句工具.相似比較(翻譯句結構化結果[1], 結構化結果[1], 詞相關評價)
			挑出分數懸的.append((分數, (配對, 選到的細配對), 結構化結果, 剖析結果字串))
		挑出分數懸的.sort(key=lambda 資料:資料[0], reverse=True)
		翻譯結果 = []
		for i in range(20):
			if len(翻譯結果)==1:
				break
			if i < len(挑出分數懸的):
				剖析結果字串 = 挑出分數懸的[i][3]
				結構化結果 = 挑出分數懸的[i][2]
				配對, 選到的細配對 = 挑出分數懸的[i][1]
				print(分數)
				print(剖析結果字串)
				print(翻譯句結構化結果)
				print(結構化結果)
				self.結構化工具.處理結構化結果(翻譯句結構化結果, 印出)
				print()
				self.結構化工具.處理結構化結果(結構化結果, 印出)
				print()
				print(分數)
				對應句結構化 = 字音結構化([(剖析結果字串[4], 剖析結果字串[5])])
				print(對應句結構化)
				print(對應句結構化[0])
				print(對應句結構化[0].下跤)
				print(對應句結構化[0].字佇詞賰幾字)
				if 對應句結構化[0].下跤 == None:
					continue
				候選句佮對應句 = self.結構化工具.處理結構化結果(結構化結果, 候選句佮對應句對照(對應句結構化[0]))
				print(候選句佮對應句)
				建立關係 = 建立候選句佮對應句關係()
				提出位置工具 = 提出對照位置()
				self.結構化工具.處理結構化結果(候選句佮對應句, 提出位置工具.提出位置)
				關係所在 = 提出位置工具.對照位置
				print(關係所在)
				print('關係所在的分數=',end='')
				扣分=提出位置工具.扣幾分()
				print(扣分)
				if 扣分<-500:
					continue
				調整物件 = 調整對照((len(剖析結果字串[4]), 關係所在, 對應句結構化[0]))
				調整後的對照關係 = self.結構化工具.處理結構化結果(候選句佮對應句, 調整物件.調整)
				print("調整後的對照關係", end=" ")
				print(調整後的對照關係)
				# 替換結果 = 建立關係.相似換新(翻譯句結構化結果[1], 調整後的對照關係[1], 對應句結構化[0], 分數[1], 分數[2])
# 				print(對應句結構化[0].下跤)
# 				對應句結構化 = 字音結構化([(剖析結果字串[4], 剖析結果字串[5])])
				print(對應句結構化[0].下跤)
				替換結果 = 建立關係.相似換新(翻譯句結構化結果[1], 調整後的對照關係[1], 對應句結構化[0], 配對, 選到的細配對)
	#  			分數=揣候選句工具.相似(翻譯句結構化結果[1], 結構化結果[1], 詞相關評價)
	# 			for 對應句 in 揣候選句工具.揣對應資料(剖析結果字串[0]):
	# 				print(對應句[1])
	# 				print(揣候選句工具.相似換新(翻譯句結構化結果, 結構化結果, 對應句[1], 詞相關評價))
				print(替換結果)
				替換陣列 = list(替換結果)
				替換陣列.sort()
				print(替換陣列)
				答案句 = []
				for 位置 in 替換陣列:
					print("替換結果[位置]")
					print(替換結果[位置])
					for 詞佮詞性集 in 替換結果[位置]:
						for 詞集 in 詞佮詞性集[0]:
# 							for 詞 in 詞集:
	# 							print(詞)
							答案句.append(詞集[0])
				print("@@@@")
				for 答案 in 答案句:
					print(答案.型, end="")
				print()
				for 答案 in 答案句:
					print(答案.音, end=" ")
				print()
				print()
				翻譯結果.append(答案句)
		return 翻譯結果
