我使用这个例子对R中的txt文档集合进行情感分析。代码是:
library(tm)
library(tidyverse)
library(tidytext)
library(glue)
library(stringr)
library(dplyr)
library(wordcloud)
require(reshape2)
files <- list.files(inputdir,pattern="*.txt")
GetNrcSentiment <- function(file){
fileName <- glue(inputdir, file, sep = "")
fileName <- trimws(fileName)
fileText <- glue(read_file(fileName))
fileText <- gsub("\\$", "", fileText)
tokens <- data_frame(text = fileText) %>% unnest_tokens(word, text)
# get the sentiment from the first text:
sentiment <- tokens %>%
inner_join(get_sentiments("nrc")) %>% # pull out only sentiment words
count(sentiment) %>% # count the # of positive & negative words
spread(sentiment, n, fill = 0) %>% …Run Code Online (Sandbox Code Playgroud) 我正在使用vaderinnltk来查找文件中每一行的情绪。我有两个问题:
vader_lexicon.txt但其语法如下:攻击 -2.5 0.92195 [-1, -3, -3, -3, -4, -3, -1, -2, -2, -3]
-2.5和代表什么0.92195 [-1, -3, -3, -3, -4, -3, -1, -2, -2, -3]?
我应该如何为新单词编码?假设我必须添加类似'100%',的内容'A1'。
nltk_data\corpora\opinion_lexicon。这些如何被利用?我也可以在这些 txt 文件中添加我的话吗?我正在开发一个项目,该项目要求我从 Bloomberg API 获取有关特定日期范围内特定证券(例如 Netflix)的新闻文章。我想在 Python 中执行此操作并获取结构 (JSON/XML) 格式的新闻文章。我相信这可以通过使用 Bloomberg Terminal 使用 EDTF(事件驱动交易源)来完成,但我想使用 Bloomberg API 来完成此操作。
我需要这些新闻文章来对文章进行情感分析。
我读了这个问题的答案:Scrape News feed from Bloomberg Terminal
我知道我确实可以访问 EDTF feed,但不知道如何在 Python 中以编程方式获取 feed,因为围绕它的文档实际上很少甚至没有。如果我可以使用 PDBLP(https://matthewgilbert.github.io/pdblp/api.html),那就更好了!
请链接一些文档、代码示例来了解如何解决此问题。如果您在 Bloomberg 上从事过类似的项目,那么如果您能分享一些代码示例,那就太好了。谢谢你!
我想使用 GridSearchCV 进行参数调整。是否还可以使用 GridSearchCV 检查 CountVectorizer 还是 TfidfVectorizer 效果最好?我的想法:
pipeline = Pipeline([
('vect', TfidfVectorizer()),
('clf', SGDClassifier()),
])
parameters = {
'vect__max_df': (0.5, 0.75, 1.0),
'vect__max_features': (None, 5000, 10000, 50000),
'vect__ngram_range': ((1, 1), (1, 2), (1,3),
'tfidf__use_idf': (True, False),
'tfidf__norm': ('l1', 'l2', None),
'clf__max_iter': (20,),
'clf__alpha': (0.00001, 0.000001),
'clf__penalty': ('l2', 'elasticnet'),
'clf__max_iter': (10, 50, 80),
}
grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1, verbose=1, cv=5)
Run Code Online (Sandbox Code Playgroud)
我的想法:CountVectorizer 与 TfidfVectorizer 相同,其中 use_idf=False 且 normalize=None。如果 GridSearchCV 给出这些参数的最佳结果,那么 CountVectorizer 是最佳选择。那是对的吗?
先感谢您 :)
python machine-learning sentiment-analysis scikit-learn gridsearchcv
总的来说,我是机器学习的新手。我目前正在尝试使用 BERT 和 Transformers 进行情感分析的教程https://curiousily.com/posts/sentiment-analysis-with-bert-and-hugging-face-using-pytorch-and-python/
我不知道如何解决这个问题。我尝试过减少纪元数量、增加批量大小、重新整理我的数据(已排序)并增加验证拆分。到目前为止还没有任何效果。我什至尝试过改变不同的学习率,但我现在使用的是最小的。
下面是我的代码:
PRE_TRAINED_MODEL_NAME = 'TurkuNLP/bert-base-finnish-cased-v1'
tokenizer = BertTokenizer.from_pretrained(PRE_TRAINED_MODEL_NAME)
MAX_LEN = 40
#Make a PyTorch dataset
class FIDataset(Dataset):
def __init__(self, texts, targets, tokenizer, max_len):
self.texts = texts
self.targets = targets
self.tokenizer = tokenizer
self.max_len = max_len
def __len__(self):
return len(self.texts)
def __getitem__(self, item):
text = str(self.texts[item])
target = self.targets[item]
encoding = self.tokenizer.encode_plus(
text,
add_special_tokens=True,
max_length=self.max_len,
return_token_type_ids=False,
pad_to_max_length=True,
return_attention_mask=True,
return_tensors='pt',
)
return {
'text': text,
'input_ids': encoding['input_ids'].flatten(),
'attention_mask': encoding['attention_mask'].flatten(),
'targets': torch.tensor(target, dtype=torch.long)
}
#split test …Run Code Online (Sandbox Code Playgroud) python sentiment-analysis bert-language-model huggingface-transformers overfitting-underfitting
我需要使用它pipeline来从数据集上的模型中获得标记化和推理distilbert-base-uncased-finetuned-sst-2-english。
我的数据是一个句子列表,出于娱乐目的,我们可以假设它是:
texts = ["this is the first sentence", "of my data.", "In fact, thats not true,", "but we are going to assume it", "is"]
在使用之前pipeline,我从模型输出中获取 logits,如下所示:
with torch.no_grad():
logits = model(**tokenized_test).logits
Run Code Online (Sandbox Code Playgroud)
现在我必须使用管道,所以这就是我获取模型输出的方式:
selected_model = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(selected_model)
model = AutoModelForSequenceClassification.from_pretrained(selected_model, num_labels=2)
classifier = pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)
print(classifier(text))
Run Code Online (Sandbox Code Playgroud)
这给了我:
[{'label': 'POSITIVE', 'score': 0.9746173024177551}, {'label': 'NEGATIVE', 'score': 0.5020197629928589}, {'label': 'NEGATIVE', 'score': 0.9995120763778687}, {'label': 'NEGATIVE', 'score': 0.9802979826927185}, {'label': 'POSITIVE', 'score': 0.9274746775627136}]
我再也找不到“logits”字段了。
有没有办法得到 thelogits …
python sentiment-analysis huggingface-transformers huggingface large-language-model
意见挖掘/情感分析是自然语言处理的一个近期的子任务.有些人将其与文本分类进行比较,有些人对此采取了更为深刻的立场.您如何看待情感分析(意见挖掘)中最具挑战性的问题?你能说出几个名字吗?
亚马逊机器学习平台对情绪分析和文本分析的灵活性或支持性如何?
nlp machine-learning amazon-web-services sentiment-analysis amazon-machine-learning
我正在尝试对我拥有的桌子进行情绪分析.
我希望每行字符串数据都传递给R脚本,但问题是Tableau只接受汇总数据作为参数:
SCRIPT_STR(
'output <- .arg1; output', [comments]
)
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误信息:
# All fields must be aggregate or constant.
Run Code Online (Sandbox Code Playgroud) 我有一个项目在哪里,我会下载过去一年发送给名人的所有推文,并对他们做一个情绪分析,并评估谁是最积极的粉丝.
然后我发现你可以使用tweepy/twitter API在最近7天内检索twitter提及.我清理了网络,但在过去的一年里找不到任何下载推文的方法.
无论如何,我决定仅在过去7天内完成该项目的数据并编写以下代码:
try:
while 1:
for results in tweepy.Cursor(twitter_api.search, q="@celebrity_handle").items(9999999):
item = (results.text).encode('utf-8').strip()
wr.writerow([item, results.created_at]) # write to a csv (tweet, date)
Run Code Online (Sandbox Code Playgroud)
我正在使用Cursor搜索api,因为获取提及的另一种方式(更准确的方法)仅限于检索最后800条推文.
无论如何,在一夜之间运行代码之后,我只能下载32K的推文.其中约90%是转推.
是否有更好的方法来获取数据?
请记住:
任何建议都会受到欢迎,但在目前这一刻,我的想法不合时宜.
python ×6
nlp ×4
python-3.x ×2
r ×2
bloomberg ×1
gridsearchcv ×1
huggingface ×1
nltk ×1
scikit-learn ×1
tableau-api ×1
tidytext ×1
tidyverse ×1
tweepy ×1
twitter ×1