{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2602-01588","title":"Spectral Text Fusion: A Frequency-Aware Approach to Multimodal Time-Series Forecasting","arxiv_id":"2602.01588","date":"2026-02-02","proceeding":null,"authors":["Huu Hiep Nguyen","Minh Hoang Nguyen","Dung Nguyen","Hung Le"],"abstract":"Multimodal time series forecasting is crucial in real-world applications, where decisions depend on both numerical data and contextual signals. The core challenge is to effectively combine temporal numerical patterns with the context embedded in other modalities, such as text. While most existing methods align textual features with time-series patterns one step at a time, they neglect the multiscale temporal influences of contextual information such as time-series cycles and dynamic shifts. This mismatch between local alignment and global textual context can be addressed by spectral decomposition, which separates time series into frequency components capturing both short-term changes and long-term trends. In this paper, we propose SpecTF, a simple yet effective framework that integrates the effect of textual data on time series in the frequency domain. Our method extracts textual embeddings, projects them into the frequency domain, and fuses them with the time series' spectral components using a lightweight cross-attention mechanism. This adaptively reweights frequency bands based on textual relevance before mapping the results back to the temporal domain for predictions. Experimental results demonstrate that SpecTF significantly outperforms state-of-the-art models across diverse multi-modal time series datasets while utilizing considerably fewer parameters. Code is available at https://github.com/hiepnh137/SpecTF.","url_abs":"https://arxiv.org/abs/2602.01588","url_pdf":"https://arxiv.org/pdf/2602.01588","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2602.01588","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.01588"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/hiepnh137/SpecTF","reach":null}],"summary":{"ran":6,"unverified":2},"by_repo_kind":{"found_in_text":{"samples":8,"ran":6,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":8,"samples":[{"code_sha256_prefix":"c10eeac186aedd86","entry":"ConstantMask","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c10eeac186aedd86"}},{"code_sha256_prefix":"28170305def990aa","entry":"FreqAttentionLayer","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"28170305def990aa"}},{"code_sha256_prefix":"6533634ba35fd937","entry":"FreqMLP","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6533634ba35fd937"}},{"code_sha256_prefix":"25ee08f4016e94a8","entry":"FullFreqAttention","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"25ee08f4016e94a8"}},{"code_sha256_prefix":"78b770443c606150","entry":"MLP","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"78b770443c606150"}},{"code_sha256_prefix":"37a9cfb1b2042fce","entry":"my_Layernorm","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"37a9cfb1b2042fce"}},{"code_sha256_prefix":"c84ad27a22dd23e6","entry":"FreqModelHistPred","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c84ad27a22dd23e6"}},{"code_sha256_prefix":"66ee13acbdfde7f0","entry":"TextEmbedding_wo_pos","repo":"hiepnh137/SpecTF","repo_kind":"found_in_text","path":"models/SpecTF.py","file_url":"https://github.com/hiepnh137/SpecTF/blob/HEAD/models/SpecTF.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"66ee13acbdfde7f0"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}