Spaces:
Sleeping
Sleeping
File size: 1,936 Bytes
dbaa71b |
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 |
import logging
from obsei.analyzer.base_analyzer import BaseAnalyzer, BaseAnalyzerConfig
from obsei.configuration import ObseiConfiguration
from obsei.sink.base_sink import BaseSink, BaseSinkConfig
from obsei.source.base_source import BaseSourceConfig, BaseSource
logger = logging.getLogger(__name__)
# Extract config via yaml file using `config_path` and `config_filename`
obsei_configuration = ObseiConfiguration()
# Initialize objects using configuration
source_config: BaseSourceConfig = obsei_configuration.initialize_instance("source_config")
source: BaseSource = obsei_configuration.initialize_instance("source")
analyzer: BaseAnalyzer = obsei_configuration.initialize_instance("analyzer")
analyzer_config: BaseAnalyzerConfig = obsei_configuration.initialize_instance("analyzer_config")
sink_config: BaseSinkConfig = obsei_configuration.initialize_instance("sink_config")
sink: BaseSink = obsei_configuration.initialize_instance("sink")
# This will fetch information from configured source ie twitter, app store etc
source_response_list = source.lookup(source_config)
for idx, source_response in enumerate(source_response_list):
logger.info(f"source_response#'{idx}'='{vars(source_response)}'")
# This will execute analyzer (Sentiment, classification etc) on source data with provided analyzer_config
# Analyzer will it's output to `segmented_data` inside `analyzer_response`
analyzer_response_list = analyzer.analyze_input(
source_response_list=source_response_list,
analyzer_config=analyzer_config
)
for idx, analyzer_response in enumerate(analyzer_response_list):
logger.info(f"source_response#'{idx}'='{vars(analyzer_response)}'")
# This will send analyzed output to configure sink ie Slack, Zendesk etc
sink_response_list = sink.send_data(analyzer_response_list, sink_config)
for idx, sink_response in enumerate(sink_response_list):
logger.info(f"source_response#'{idx}'='{vars(sink_response)}'")
|