-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLanguageTranslator.R
More file actions
144 lines (126 loc) · 5.99 KB
/
Copy pathLanguageTranslator.R
File metadata and controls
144 lines (126 loc) · 5.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
library(RCurl)
library(httr)
library(XML)
library(data.table)
library(reshape2)
library(dplyr)
library(plyr)
library(stringr)
## LANGUAGE Translation & Identification - CREDENTIALS from SERVICE
setwd("/Users/hinagandhi/desktop/")
url="https://gateway.watsonplatform.net/language-translator/api"
username="fc997a64-239b-40f8-9b9f-88b0e73177f1"
password="OrjFfTdtsJlO"
username_password = paste(username,":",password,sep="")
# FUNCTION DECLARE: LIST LINGOS - What languages does watson speak? # quick check - LIST OF AVAILABLE LANGUAGES = Identifies the language of the input text
watson.language.list <- function()
{
response <- getURL(paste(url,"/v2/identifiable_languages",sep=""),userpwd = username_password)
response <- as.data.frame(strsplit(as.character(response),"\"language\":\""))
response <- data.frame(do.call('rbind', strsplit(as.character(response[,1]),'\"',fixed=TRUE)))
response <- subset(response, select=c("X1", "X5"))
response <- response[-c(1), ] # remove first row
return(response)
}
#OK lets Test:
language_lookup <- watson.language.list()
language_lookup
options(warn=-1)
###### FUNCTION - ANalyze TEXT/DOC RECEIVED and return language with confidence
watson.language.analyze <- function(text_to_analyze)
{
response <- (POST(url=paste(url,"/v2/identify",sep=""),
authenticate(username,password),
add_headers("Content-Type"="text/plain","charset"="utf-8" ),
body = text_to_analyze
))
response <- content(response, "text")
response <- as.data.frame(strsplit(as.character(response),"\"language\":\""))
response <- data.frame(do.call('rbind', strsplit(as.character(response[,1]),'\"',fixed=TRUE)))
response <- subset(response, select=c("X1", "X4"))
response <- response[-c(1), ] # remove first row
response$X4 <- gsub("[{error: no user with username ',:' was found}]","",response$X4)
response$X4 <- round(as.numeric(response$X4),4)
head(response,5)
response <- (merge(response, language_lookup, by = 'X1'))
response <- response[order(-response$X4), ]
rownames(response) <- NULL
colnames(response) <- c("ln","confidence","language")
return(response)
}
## TESTING - Parlez vous francais?
TEXT <- "bonjour! comment ca va?"
TEXT <- "Örülök, hogy a városban élő"
TEXT <- "ويسرني أن تكون البرمجة"
TEXT <- "私は都市に住んでいることを嬉しく思います"
TEXT <- "我很高興能住在城市"
TEXT <- "நான் நகரத்தில் வாழும் வேண்டும் மகிழ்ச்சி அடைகிறேன்"
TEXT <- "میں شہر میں رہنے کے لئے خوش ہوں"
TEXT <- "Ես գոհ եմ, որ ապրում է քաղաքի"
TEXT <- "Я радий жити в місті"
TEXT <- "Би хотод амьдарч байгаадаа баяртай байна"
TEXT <- "Είμαι στην ευχάριστη θέση να ζουν στην πόλη"
language_analysis <- watson.language.analyze(TEXT)
head(language_analysis)
#######################
# reading csv file with one column for languages
data <- read.csv("language_samples_raw.csv", header = FALSE) # no header, one single CSV column # need more work to handle the chinese,japanese characters
data <- data.frame(data)
data
length <- dim(data)[1] # get height of the list, so we can size loop correctly.
data$output_language <- ""
data$output_confidence <- ""
for (i in 1:length)
{
text <- paste(data$V1[i])
language_analysis <- watson.language.analyze(text)
temp <- as.data.frame(language_analysis[1,])
print(paste(i," | Language:",temp$language, " | Confidence:",temp$confidence," | text analyzed:",text))
#print(output) #show in terminal
data$output_language[i] <- paste(temp$language)
data$output_confidence[i] <- temp$confidence
}
head(data)
write.csv(data, file = "language_post_analysis.csv")
#=========
### FUNCTION - TRANSLATE AN ENGLISH SOURCE INTO REQUESTED LANGUAGE
##### FUNCTION - ANalyze TEXT/DOC RECEIVED and return language with confidence
watson.language.translate1 <- function(text_input,language_to)
{
response <- (POST(url=paste(url,"/v2/translate",sep=""),
authenticate(username,password),
body = list(source = "en",
target = language_to,
text = text_input
)
))
return(response)
}
# model_id": en-es-conversational. Options: Conversational News Patent
# Translation is available among Arabic, English, French, Portuguese, and Spanish (KOrean & Chinese depend on region)
translate_this <- "For gardens to flourish, they need good soil and regular water"
translate_to <- "fr" # less options here - en, fr,es (spanish), ar (arabic), pt (portugese)
reply <- watson.language.translate1(translate_this,translate_to)
##### FUNCTION - ANalyze TEXT/DOC RECEIVED and return language with confidence
watson.language.translate.all <- function(text_input)
{
#test[1] = paste(content(watson.language.translate1("The IBM Watson Language Translation service converts text input in one language into a destination language for the end user using background from domain-specifc models. Translation is available among Arabic, English, French, Portuguese, and Spanish","fr"),"text"),"fr")
test = content(watson.language.translate1(text_input,"pt"))
#test[2] = paste(content(watson.language.translate1(text_input,"es"),"text"),"es")
#test[3] = paste(content(watson.language.translate1(text_input,"pt"),"text"),"pt")
#test[4] = paste(content(watson.language.translate1(text_input,"ar"),"text"),"ar")
test <- data.frame(test)
return(test)
}
# calling translate.all function for each line of csv
for (i in 1:length)
{
text <- paste(data$V1[i])
language_analysis <- watson.language.translate.all(text)
temp <- as.data.frame(language_analysis[1,])
print(paste(i," | Translation:",temp$translation, " | Word Count:",temp$word_count))
data$output_translation[i] <- paste(temp$translation)
data$output_word_count[i] <- temp$word_count
}
View(data)
write.csv(data,"language_translation.csv")